【shell脚本语法大全】在Linux系统中,Shell脚本是一种非常强大的工具,用于自动化任务、系统管理以及日常操作。掌握Shell脚本的语法是提升工作效率的重要一步。以下是对Shell脚本常用语法的总结,便于快速查阅和学习。
一、Shell脚本基础语法
| 语法元素 | 说明 | 示例 | ||||
| `!/bin/bash` | 指定解释器,通常放在脚本第一行 | `!/bin/bash` | ||||
| `echo` | 输出文本或变量内容 | `echo "Hello World"` | ||||
| `read` | 从标准输入读取数据 | `read name` | ||||
| `` | 单行注释 | ` 这是一个注释` | ||||
| `;` | 分隔多条命令 | `echo "A"; echo "B"` | ||||
| `&&` | 逻辑与,前一个命令成功才执行后一个 | `command1 && command2` | ||||
| ` | ` | 逻辑或,前一个命令失败才执行后一个 | `command1 | command2` |
二、变量与参数
| 语法 | 说明 | 示例 | ||
| `var=value` | 定义变量 | `name="John"` | ||
| `$var` | 引用变量 | `echo $name` | ||
| `${var:-default}` | 若变量为空,则使用默认值 | `echo ${name:-Guest}` | ||
| `$@` | 所有位置参数(保留引号) | `for arg in "$@"; do echo $arg; done` | ||
| `$` | 所有位置参数(合并为一个字符串) | `echo $` | ||
| `$` | 参数个数 | `echo $` | ||
| `$?` | 上一条命令的返回状态(0表示成功) | `ls /nonexistent && echo "Success" | echo "Failure"` |
三、条件判断语句
| 语法 | 说明 | 示例 |
| `[ condition ]` | 条件测试 | `[ $a -eq $b ]` |
| `[[ condition ]]` | 更强的条件测试(支持字符串比较等) | `[[ $str == "hello" ]]` |
| `if ... then ... fi` | 条件判断结构 | `if [ $a -gt 5 ]; then echo "Greater"; fi` |
| `elif ...` | 否则如果 | `if [ $a -gt 5 ]; then ... elif [ $a -eq 5 ]; then ...` |
| `else` | 否则 | `if ...; then ... else ... fi` |
| `case ... esac` | 多条件匹配 | `case $var in a) echo "A";; b) echo "B";; esac` |
四、循环结构
| 语法 | 说明 | 示例 |
| `for var in list; do ... done` | 遍历列表 | `for i in 1 2 3; do echo $i; done` |
| `for (( expr1; expr2; expr3 ))` | C语言风格循环 | `for (( i=0; i<5; i++ )); do echo $i; done` |
| `while condition; do ... done` | 当条件为真时循环 | `while [ $i -lt 5 ]; do echo $i; i=$((i+1)); done` |
| `until condition; do ... done` | 直到条件为真时停止 | `until [ $i -ge 5 ]; do echo $i; i=$((i+1)); done` |
五、函数定义与调用
| 语法 | 说明 | 示例 |
| `function name { ... }` | 定义函数 | `function greet() { echo "Hello $1"; }` |
| `name() { ... }` | 简写函数定义 | `greet() { echo "Hi $1"; }` |
| `return` | 函数返回值(0-255) | `add() { return $(($1 + $2)); }` |
| `exit` | 退出脚本并返回状态码 | `exit 0` |
六、文件重定向与管道
| 符号 | 说明 | 示例 | ||
| `>` | 输出重定向(覆盖) | `echo "test" > file.txt` | ||
| `>>` | 输出追加 | `echo "more" >> file.txt` | ||
| `<` | 输入重定向 | `cat < file.txt` | ||
| ` | ` | 管道,将前一个命令的输出作为下一个命令的输入 | `ls | grep .sh` |
| `2>` | 错误输出重定向 | `command 2> error.log` | ||
| `&>` | 合并标准输出和错误输出 | `command &> output.log` |
七、特殊符号与通配符
| 符号 | 说明 | 示例 |
| `` | 匹配任意字符(零个或多个) | `.txt` |
| `?` | 匹配单个字符 | `file?.txt` |
| `[abc]` | 匹配括号中的任意一个字符 | `[aeiou].txt` |
| `^` | 取反(在[]中使用) | `[^0-9].txt` |
| `\` | 转义字符 | `echo \` |
| `''` | 单引号,禁止变量扩展 | `echo 'Hello $name'` |
| `""` | 双引号,允许变量扩展 | `echo "Hello $name"` |
八、常用命令与工具
| 命令 | 说明 | 示例 | |
| `grep` | 文本搜索 | `grep "error" log.txt` | |
| `sed` | 流编辑器 | `sed 's/old/new/' file.txt` | |
| `awk` | 文本处理工具 | `awk '{print $1}' file.txt` | |
| `cut` | 提取文本列 | `cut -d: -f1 /etc/passwd` | |
| `sort` | 排序 | `sort file.txt` | |
| `uniq` | 去重 | `sort file.txt | uniq` |
| `find` | 文件查找 | `find /home -name ".log"` | |
| `tar` | 打包压缩 | `tar -cvf archive.tar folder/` |
通过以上表格,可以快速了解Shell脚本的基本语法和常用命令。建议在实际使用中不断练习,结合具体场景编写脚本,以提高效率和解决问题的能力。


