【shell脚本语法大全】Shell 脚本是 Linux/Unix 系统中非常重要的工具,广泛用于自动化任务、系统管理、文件处理等。掌握 Shell 脚本的语法是每个系统管理员和开发者的必备技能。以下是对 Shell 脚本常用语法的总结,并以表格形式进行分类展示,便于查阅与学习。
一、基础语法
类别 | 内容说明 | 示例 |
注释 | 使用 `` 进行注释 | ` 这是一个注释` |
变量定义 | 使用 `变量名=值` 定义变量 | `name="John"` |
变量引用 | 使用 `$变量名` 引用变量 | `echo $name` |
命令执行 | 使用反引号或 `$()` 执行命令 | `date=$(date)` |
条件判断 | 使用 `[ 条件 ]` 或 `[[ 条件 ]]` | `if [ $a -eq 5 ]; then ... fi` |
二、流程控制语句
类别 | 内容说明 | 示例 |
if 语句 | 判断条件是否成立 | `if [ $num -gt 10 ]; then echo "大于10"; fi` |
else 语句 | 否则执行 | `if [ $num -gt 10 ]; then ... else ... fi` |
elif 语句 | 多条件判断 | `if [ $num -gt 10 ]; then ... elif [ $num -eq 10 ]; then ... fi` |
for 循环 | 遍历列表或范围 | `for i in 1 2 3; do echo $i; done` |
while 循环 | 当条件为真时循环 | `while [ $count -lt 5 ]; do count=$((count+1)); done` |
until 循环 | 直到条件为真时退出 | `until [ $count -ge 5 ]; do count=$((count+1)); done` |
三、函数定义与调用
类别 | 内容说明 | 示例 |
函数定义 | 使用 `function 函数名` 或 `函数名() { ... }` | `greet() { echo "Hello, $1"; }` |
函数调用 | 直接使用函数名并传参 | `greet "Alice"` |
返回值 | 使用 `return` 返回整数 | `add() { return $(($1 + $2)); }` |
参数传递 | 使用 `$1`, `$2` 等获取参数 | `echo "第一个参数: $1"` |
四、字符串与数值操作
类别 | 内容说明 | 示例 |
字符串拼接 | 直接使用变量拼接 | `full_name="$first $last"` |
字符串长度 | 使用 `${变量}` 获取长度 | `len=${name}; echo $len` |
数值运算 | 使用 `$((表达式))` 进行计算 | `sum=$((a + b))` |
比较运算 | `-eq`, `-ne`, `-gt`, `-lt`, `-ge`, `-le` | `if [ $a -gt 5 ]; then ... fi` |
五、文件与目录操作
类别 | 内容说明 | 示例 |
文件判断 | `[ -f 文件 ]` 判断是否为文件 | `if [ -f /etc/passwd ]; then ... fi` |
目录判断 | `[ -d 目录 ]` 判断是否为目录 | `if [ -d /home ]; then ... fi` |
文件读取 | 使用 `read` 读取输入 | `read name` |
文件写入 | 使用 `>` 或 `>>` 重定向输出 | `echo "content" > file.txt` |
六、特殊字符与通配符
符号 | 说明 | 示例 |
匹配任意多个字符 | `ls .txt` | |
? | 匹配一个字符 | `ls file?.txt` |
[] | 匹配括号内的任意字符 | `ls file[1-3].txt` |
\ | 转义符号 | `echo \"Hello\"` |
` | 命令替换 | `today=$(date)` |
七、环境变量与位置参数
类别 | 内容说明 | 示例 |
环境变量 | 通过 `export` 设置 | `export PATH=$PATH:/new/path` |
位置参数 | `$0`, `$1`, `$2` 等表示参数 | `echo "第一个参数: $1"` |
特殊变量 | `$?` 表示上一条命令的返回值 | `if [ $? -eq 0 ]; then ... fi` |
总结:
Shell 脚本虽然语法简单,但功能强大,适用于各种自动化场景。掌握基本语法后,结合实际问题,可以编写出高效、简洁的脚本。建议在实践中不断积累经验,同时多参考官方文档和社区资源,提升脚本编写能力。
如需进一步了解特定命令或高级用法(如正则表达式、数组、管道等),可继续深入学习。