Linux Shell语法基础
Linux Shell是用户与Linux系统交互的重要桥梁,它不仅提供了命令行界面,还支持脚本编程,实现自动化任务,掌握Shell语法对于系统管理和高效操作至关重要,本文将详细介绍Linux Shell的基础语法,包括变量、控制结构、函数、输入输出处理等内容,帮助读者构建扎实的Shell编程能力。

变量定义与使用
在Shell中,变量无需声明类型,直接赋值即可使用,变量名由字母、数字和下划线组成,且不能以数字开头,赋值时使用,且两边不能有空格。
name="Linux" version=5.4 is_server=true
访问变量时需在变量名前加符号,如echo $name或echo ${name},花括号用于明确变量边界,特别是在字符串拼接时:
echo "Hello, ${name}! Current version: $version"
只读变量使用readonly声明,如readonly version;删除变量则用unset,但只读变量无法删除。
特殊变量与参数
Shell提供了一些特殊变量,用于获取脚本执行时的信息:
$0:脚本名称$1-$9:脚本参数位置(如$1为第一个参数)- 参数个数
- 所有参数作为一个字符串
- 所有参数作为独立字符串
- 上一条命令的退出状态(0表示成功)
- 当前进程ID
脚本test.sh内容如下:
#!/bin/bash echo "Script name: $0" echo "First argument: $1" echo "Total arguments: $#"
执行./test.sh arg1 arg2后,输出对应参数信息。
条件判断
Shell的条件判断通过test命令或[]实现,常见判断条件包括:
- 数值比较:
-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于) - 字符串比较:(等于)、(不等于)、
-z(空字符串)、-n(非空) - 文件判断:
-e(存在)、-f(普通文件)、-d(目录)、-r(可读)
示例:
if [ $age -gt 18 ]; then
echo "Adult"
else
echo "Minor"
fi
注意:[和]需与条件间有空格,否则会报错。
循环结构
Shell支持for、while和until循环,适用于不同场景。

-
for循环:遍历列表或文件名
for file in *.txt; do echo "Processing $file" done
-
while循环:条件为真时执行
count=1 while [ $count -le 5 ]; do echo "Count: $count" ((count++)) done
-
until循环:条件为假时执行
until [ $count -gt 5 ]; do echo "Count: $count" ((count++)) done
函数定义
函数是Shell代码复用的关键,定义格式为:
function_name() {
commands
[return value]
}
调用函数直接写函数名,如my_func,函数通过return返回状态码(0-255),也可通过echo返回字符串:
add() {
local result=$(( $1 + $2 ))
echo $result
}
sum=$(add 3 5)
echo "Sum: $sum"
注意:函数内部变量默认为全局,使用local可声明局部变量。
输入输出与重定向
Shell的输入输出处理是脚本自动化的核心:
- 标准输入(stdin):文件描述符0,默认为键盘
- 标准输出(stdout):文件描述符1,默认为屏幕
- 标准错误(stderr):文件描述符2,默认为屏幕
重定向符号包括:
>:覆盖输出到文件>>:追加输出到文件2>:重定向错误输出&>:合并输出和错误到同一文件
示例:
ls /nonexistent 2> error.log # 错误写入error.log ls /etc > file_list.txt # 列表写入file_list.txt
文本处理工具
Shell结合文本处理工具可高效处理数据:

-
grep:文本搜索
grep "error" log.txt
-
sed:流编辑器,用于替换或删除文本
sed 's/old/new/g' file.txt # 全局替换
-
awk:字段处理工具
awk '{print $1, $3}' data.txt # 输出第一和第三列 -
cut:提取列
cut -d',' -f1,3 csv.csv # 提取以逗号分隔的第一和第三列
脚本调试与执行
编写Shell脚本时,调试是必不可少的环节:
-
使用
-x参数执行脚本,显示每条命令的执行过程:bash -x script.sh
-
使用
-n参数检查语法错误:bash -n script.sh
脚本首行需指定解释器,如#!/bin/bash,并通过chmod +x赋予执行权限后,可直接运行。
Linux Shell语法是系统管理者和开发者的必备技能,从简单的变量操作到复杂的文本处理,Shell的灵活性和强大功能能够显著提升工作效率,通过本文的介绍,读者应已掌握Shell的基础语法,并能够编写简单的自动化脚本,进一步学习正则表达式、进程管理等高级主题,将有助于更深入地利用Shell解决实际问题。


















