1. 脚本的基本格式与执行 (基础)

  • 第一行 (Shebang):脚本必须以 #!/bin/bash (或 #!/bin/sh) 开头,告诉系统用哪个解释器 。
  • 注释:以 # 开头 。
  • 退出码exit 0 表示成功,非0表示失败 。
  • 执行方式
    1. 赋予权限:chmod +x myscript.sh
    2. 执行:./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
done

C. while 循环

while [ 条件 ]
do
    命令
done

D. case 语句 (多重分支,类似 switch) 常用于处理菜单选择。

case "$变量" in
    模式1)
        命令 ;;
    模式2)
        命令 ;;
    *)
        默认命令 ;;
esac