【shell脚本语法大全】Shell 脚本是 Linux/Unix 系统中非常重要的工具,广泛用于系统管理、自动化任务和程序开发。掌握 Shell 脚本的语法对于提高工作效率、简化重复性操作具有重要意义。以下是对 Shell 脚本常用语法的总结,并以表格形式进行分类展示。
一、Shell 脚本基础语法
类型 | 说明 | 示例 |
注释 | 以 `` 开头,用于解释代码 | ` 这是一个注释` |
变量 | 使用 `var=value` 定义变量,引用时使用 `$var` | `name="John"` `echo $name` |
命令执行 | 使用反引号或 `$()` 执行命令并获取输出 | `date=$(date)` `current_time=`date`` |
条件判断 | 使用 `[ ]` 或 `[[ ]]` 判断条件 | `if [ $a -eq 5 ]; then ... fi` |
循环 | `for`, `while`, `until` 等循环结构 | `for i in 1 2 3; do echo $i; done` |
二、流程控制语句
语句 | 说明 | 示例 |
if-else | 条件分支判断 | `if [ $age -gt 18 ]; then echo "Adult"; else echo "Minor"; fi` |
case | 多条件匹配 | `case $var in a) echo "A";; b) echo "B";; esac` |
for 循环 | 遍历列表或范围 | `for file in .txt; do echo $file; done` |
while 循环 | 当条件为真时循环 | `while [ $count -lt 10 ]; do count=$((count+1)); done` |
until 循环 | 直到条件为真时停止 | `until [ $count -ge 10 ]; do count=$((count+1)); done` |
三、函数与参数处理
功能 | 说明 | 示例 |
函数定义 | 使用 `function name { ... }` 或 `name() { ... }` | `greet() { echo "Hello, $1"; }` |
参数传递 | `$1`, `$2` 表示位置参数 | `greet "John"` `echo $1` 输出 "John" |
特殊参数 | `$`, `$@`, `$`, `$?` 等 | `echo $` 显示所有参数 `echo $?` 显示上一条命令的返回值 |
四、字符串与文件操作
操作 | 说明 | 示例 |
字符串拼接 | 直接使用变量拼接 | `greeting="Hello, "$name` |
字符串长度 | 使用 `${var}` 获取长度 | `len=${name}` |
文件存在性检查 | 使用 `-e`, `-f`, `-d` 判断 | `if [ -f "file.txt" ]; then ... fi` |
读取文件内容 | 使用 `cat`, `while read` 等 | `while read line; do echo $line; done < file.txt` |
五、输入输出重定向与管道
符号 | 说明 | 示例 | ||
`>` | 输出重定向(覆盖) | `echo "Hello" > output.txt` | ||
`>>` | 输出追加 | `echo "World" >> output.txt` | ||
`<` | 输入重定向 | `sort < input.txt` | ||
` | ` | 管道,将前一个命令的输出作为下一个命令的输入 | `ps aux | grep "nginx"` |
六、正则表达式与模式匹配
操作 | 说明 | 示例 |
`[[ $var =~ regex ]]` | 正则匹配 | `if [[ $email =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then ... fi` |
`grep` | 文本搜索 | `grep "error" log.txt` |
`sed` | 流编辑器 | `sed 's/old/new/' file.txt` |
七、常见错误与调试技巧
问题 | 解决方法 |
语法错误 | 使用 `bash -n script.sh` 检查语法 |
变量未定义 | 使用 `set -u` 报错 |
调试脚本 | 使用 `set -x` 显示执行过程 |
权限不足 | 使用 `chmod +x script.sh` 添加可执行权限 |
总结
Shell 脚本虽然语法简单,但功能强大,适用于各种自动化场景。掌握其基本语法、流程控制、函数使用以及文件和字符串操作是编写高效脚本的关键。通过合理使用条件判断、循环、函数等结构,可以显著提升系统管理和任务自动化的能力。
建议在实际使用中多写多练,结合 `man bash` 和在线文档进行深入学习。