张芷铭的个人博客

Bash 脚本是 Linux/Unix 自动化任务的核心工具,语法围绕变量、流程控制、文件操作展开。

脚本结构

1
2
3
4
5
6
#!/bin/bash
# 注释

# 执行方式
chmod +x script.sh
./script.sh

变量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
name="Bash"          # 定义(等号无空格)
echo $name           # 使用
echo ${name}test     # {} 明确边界

# 命令替换
dir=$(pwd)

# 脚本参数
$0    # 脚本名
$1    # 第一个参数
$#    # 参数个数
$@    # 所有参数
$?    # 上条命令状态

输入输出

1
2
3
echo "Hello"
read -p "输入姓名:" name
printf "姓名:%s\n" "Alice"

条件判断

1
2
3
4
5
6
7
if [ $a -eq $b ]; then  # 数值相等
  echo "equal"
elif [ -f $file ]; then # 文件存在
  echo "file exists"
else
  echo "other"
fi
操作符含义
-eq -ne -gt -lt数值比较
== !=字符串比较
-f -d -x -e文件判断

循环

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# for 循环
for i in {1..5}; do
  echo $i
done

# while 循环
while [ $i -le 5 ]; do
  echo $i
  i=$((i+1))
done

函数

1
2
3
4
add() {
  echo $(($1 + $2))
}
result=$(add 3 5)

文件操作

1
2
3
4
5
6
7
touch file.txt      # 创建
mkdir -p dir/sub    # 创建目录
cp -r src dst       # 复制
mv old new          # 移动/重命名
rm -rf dir          # 删除
cat file            # 读取
grep "key" file     # 搜索

重定向

1
2
3
cmd > file     # 覆盖
cmd >> file    # 追加
cmd < file     # 读取

调试

1
2
bash -x script.sh    # 打印每步执行
echo $?              # 查看状态码

Comments