Bash 脚本速查表

把 Bash 脚本最常用的语法整理成速查表,写 Shell 脚本时对照查。

系统与运维·共 43 条命令·最后更新 2026-07-19
返回 系统与运维

变量 Variables 8

NAME="value"
定义变量(等号两边不能有空格)
echo $NAME
读取变量
echo ${NAME}
读取变量(推荐,避免歧义)
readonly NAME="value"
定义只读变量
unset NAME
删除变量
${VAR:-default}
变量为空时使用默认值
${VAR:=default}
变量为空时赋值并使用
${#VAR}
获取字符串长度

条件判断 Conditionals 7

if [ condition ]; then ... fi
if 语句
if [ -f file ]; then ... fi
判断文件是否存在
if [ $a -eq $b ]; then ... fi
数值比较(-eq -ne -gt -lt)
if [ "$str" = "value" ]; then ... fi
字符串比较(= !=)
if [[ $str =~ regex ]]; then ... fi
正则匹配(双括号)
[ -d dir ] && echo "exists"
短路写法
case $var in pattern1) ... ;; pattern2) ... ;; esac
case 语句

循环 Loops 6

for i in 1 2 3; do echo $i; done
for 循环遍历列表
for ((i=0; i<10; i++)); do ... done
C 风格 for 循环
while [ condition ]; do ... done
while 循环
until [ condition ]; do ... done
until 循环(条件为假时执行)
break / continue
跳出循环 / 跳过本次
select var in list; do ... done
交互式选择菜单

函数 Functions 7

function name() { ... }
定义函数
name() { ... }
定义函数(简写)
name arg1 arg2
调用函数
$1 $2 $@
位置参数 / 所有参数
$#
参数个数
return 0
返回值(0 表示成功)
local var="value"
局部变量

字符串操作 String Operations 7

${VAR:offset:length}
截取子串
${VAR#pattern}
删除最短匹配前缀
${VAR##pattern}
删除最长匹配前缀
${VAR%pattern}
删除最短匹配后缀
${VAR%%pattern}
删除最长匹配后缀
${VAR/pattern/replacement}
替换第一个匹配
${VAR//pattern/replacement}
替换所有匹配

文件测试 File Tests 8

[ -f file ]
文件存在且是普通文件
[ -d dir ]
目录存在
[ -e path ]
路径存在
[ -r file ]
文件可读
[ -w file ]
文件可写
[ -x file ]
文件可执行
[ -s file ]
文件大小大于 0
[ file1 -nt file2 ]
file1 比 file2 新

💡 提示

  • 变量赋值时等号两边不能有空格,否则会被解释为命令。
  • 使用双引号包裹变量("$VAR")避免空格和特殊字符问题。
  • [ ] 是 test 命令的语法糖,[[ ]] 是 Bash 扩展,支持更多功能如正则匹配。