Bash 脚本速查表
把 Bash 脚本最常用的语法整理成速查表,写 Shell 脚本时对照查。
返回 系统与运维变量 Variables 8
NAME="value"定义变量(等号两边不能有空格)
echo $NAME读取变量
echo ${NAME}读取变量(推荐,避免歧义)
readonly NAME="value"定义只读变量
unset NAME删除变量
${VAR:-default}变量为空时使用默认值
${VAR:=default}变量为空时赋值并使用
${#VAR}获取字符串长度
条件判断 Conditionals 7
if [ condition ]; then ... fiif 语句
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) ... ;; esaccase 语句
循环 Loops 6
for i in 1 2 3; do echo $i; donefor 循环遍历列表
for ((i=0; i<10; i++)); do ... doneC 风格 for 循环
while [ condition ]; do ... donewhile 循环
until [ condition ]; do ... doneuntil 循环(条件为假时执行)
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 扩展,支持更多功能如正则匹配。