网站首页 > 技术文章 正文
下面是**Shell(Bash)语法的常用知识点总结**,适合初学者和日常脚本编写参考。内容涵盖变量、判断、循环、函数、重定向、正则、数组等常见用法。
---
# Shell(Bash)语法速查总结
## 一、变量与赋值
```bash
name="World" # 赋值(等号两边不能有空格)
echo $name # 取变量值,推荐${name}防止歧义
num=123
```
## 二、命令替换
```bash
now=$(date) # 推荐用$()而不是反引号``
filename=$(ls | head -n 1)
```
## 三、算术运算
```bash
a=5; b=3
sum=$((a + b)) # 8
let c=a*b
((d=a-b))
```
## 四、字符串操作
```bash
str="hello world"
echo ${str:0:5} # hello, 字符串切片
echo ${#str} # 字符串长度
echo ${str/world/Bash} # 替换为hello Bash
```
## 五、数组
```bash
arr=(a b "c d")
echo ${arr[1]} # b
echo ${arr[@]} # 遍历所有元素
len=${#arr[@]} # 元素个数
```
## 六、条件判断
### 1. **文件判断**
```bash
[ -f file ] # 是否为普通文件
[ -d dir ] # 是否为目录
[ -e path ] # 文件或目录是否存在
[ -s file ] # 文件非空
```
### 2. **数值比较**
```bash
[ "$a" -eq "$b" ] # 等于
[ "$a" -ne "$b" ] # 不等于
[ "$a" -gt "$b" ] # 大于
[ "$a" -lt "$b" ] # 小于
```
### 3. **字符串比较**
```bash
[ "$a" = "$b" ] # 相等
[ "$a" != "$b" ] # 不等
[ -z "$a" ] # 字符串为空
[ -n "$a" ] # 字符串非空
```
### 4. **if语句**
```bash
if [ 条件 ]; then
# 代码
elif [ 其他条件 ]; then
# 其他
else
# 默认
fi
```
## 七、循环
### 1. **for循环**
```bash
for i in 1 2 3; do
echo $i
done
for file in *.txt; do
echo $file
done
```
### 2. **while循环**
```bash
count=0
while [ $count -lt 5 ]; do
echo $count
((count++))
done
```
### 3. **until循环**
```bash
until [ $count -ge 5 ]; do
echo $count
((count++))
done
```
## 八、函数
```bash
myfunc() {
echo "Hello $1"
}
myfunc Tom
```
## 九、读取输入
```bash
read var
read -p "请输入内容:" var
```
## 十、case语句(多分支)
```bash
read -p "输入y/n: " ans
case $ans in
y|Y) echo "yes";;
n|N) echo "no";;
*) echo "other";;
esac
```
## 十一、重定向与管道
```bash
ls > out.txt # 标准输出重定向
ls >> out.txt # 追加
cat file 2> err.log # 标准错误重定向
sort < file
ls | grep txt # 管道
```
## 十二、通配符与正则
- `*` :任意长度字符串
- `?` :单个任意字符
- `[abc]`:a或b或c
- `{a,b,c}`:a、b、c之一
正则可用于`grep`、`sed`、`awk`等
---
## 十三、参数处理
```bash
echo $0 # 脚本名
echo $1 # 第1个参数
echo $@ # 所有参数
echo $# # 参数个数
```
---
## 十四、退出与返回值
```bash
exit 0 # 正常退出
exit 1 # 异常退出
# 上一条命令的返回值:$?
```
---
## 十五、常用命令
- `ls`, `cp`, `mv`, `rm`, `find`, `grep`, `awk`, `sed`, `cut`, `sort`, `uniq`, `head`, `tail`
- `chmod`, `chown`, `touch`, `cat`, `echo`
---
## 十六、注释
```bash
# 这是注释
```
---
## 十七、特殊符号
- `&&` :前一命令成功才执行后一条
- `||` :前一命令失败才执行后一条
- `;` :无论前一命令成败都执行后一条
- `\` :续行
---
## 十八、调试
```bash
bash -x script.sh # 跟踪执行
set -x # 脚本内开启调试
set +x # 脚本内关闭调试
```
---
# 结语
掌握上面这些语法,你就可以编写和理解绝大多数常见 Shell 脚本,自动化日常任务和数据处理。
如需深入学习某一部分(如正则、数组、函数参数等),欢迎继续提问!
- 上一篇: 为什说破壳漏洞会带来一场全球服务器的浩劫
- 下一篇: 解决运维痛点磁盘空间不足(磁盘运营100%)
猜你喜欢
- 2025-06-30 记录一次彻底清除挖矿病毒(挖矿 清退)
- 2025-06-30 linux计划任务管理(linux计划任务设置)
- 2025-06-30 Linux基本命令—修改命令别名(linux永久修改别名)
- 2025-06-30 CentOS nodejs环境配置(centos nodejs安装)
- 2025-06-30 一文带你掌握shell脚本中的if条件语句,轻松搞定工作需求
- 2025-06-30 如何在Shell中使用加密密码 ?Linux 进阶收藏!
- 2025-06-30 为 RabbitMQ 服务器启用 SSL/TLS(rabbitmq服务启动几秒停止)
- 2025-06-30 从Git远程仓库单独拉取指定目录或文件
- 2025-06-30 Shell脚本关于循环的一些总结(shell 脚本 循环)
- 2025-06-30 Elasticsearch 的用户名和密码设置
- 1506℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 493℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 484℃MySQL service启动脚本浅析(r12笔记第59天)
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 458℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 442℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 421℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)