1. 脚本的基本格式与执行 (基础)
- 第一行 (Shebang):脚本必须以
#!/bin/bash(或#!/bin/sh) 开头,告诉系统用哪个解释器 。 - 注释:以
#开头 。 - 退出码:
exit 0表示成功,非0表示失败 。 - 执行方式:
- 赋予权限:
chmod +x myscript.sh。 - 执行:
./myscript.sh(如果不在PATH路径下,必须加./) 。
- 赋予权限:
2. 变量定义与引用 (易错点)
- 定义:
变量名=值。注意:等号两边千万不能有空格! 。- 错误:
myvar = hello - 正确:
myvar=hello
- 错误:
- 引用:使用
$符号,如$myvar或${myvar}。 - 引号的区别 (选择题常考) :
- 双引号
"":允许变量替换 (如echo "x=$x"输出x=5)。 - 单引号
'':所见即所得,不进行变量替换 (如echo 'x=$x'输出x=$x)。 - 反引号
`:执行命令并将结果赋值给变量 (如val=expr 2 + 2“) 。
- 双引号
3. 位置参数 (必考:脚本如何接收参数)
这在编写通用脚本时非常关键,例如“写一个脚本,处理用户指定的文件”。
$0:脚本程序本身的名称 。$1,$2…:第一个参数,第二个参数 。$#:参数的总个数 。$*或$@:所有参数的列表 。$?:上一个命令的退出状态 (0表示成功) 。
4. 运算与测试 (逻辑核心)
Shell 的逻辑判断语法非常特殊,[ 和 ] 内部必须有空格 。
- 算术运算:使用
$((expression)),如echo $((1+3))。 - 条件测试
[ expr ](重点记忆表格):- 数字比较 :
-eq(等于),-ne(不等于)-gt(大于),-lt(小于)-ge(大于等于),-le(小于等于)
- 字符串比较 :
=(相等),!=(不相等)-z(空串),-n(非空)
- 文件测试 (常考) :
-f(普通文件)-d(目录)-e(文件存在)-r(可读),-w(可写),-x(可执行)
- 数字比较 :
5. 流程控制 (大题骨架)
A. if 语句
if [ 条件判断 ]; then
命令1
elif [ 条件判断 ]; then
命令2
else
命令3
fi注意:if 和 [ 之间要有空格,[ 和条件之间也要有空格。
B. for 循环 常用于遍历文件列表。
for var in item1 item2 ...
do
命令
done实例:遍历 /etc 目录下所有 r 开头的文件 :
for myfile in /etc/r*
do
if [ -d "$myfile" ]; then
echo "$myfile is a directory"
fi
doneC. while 循环
while [ 条件 ]
do
命令
doneD. case 语句 (多重分支,类似 switch) 常用于处理菜单选择。
case "$变量" in
模式1)
命令 ;;
模式2)
命令 ;;
*)
默认命令 ;;
esac