补充说明
bash 是 POSIX shell 的超集,兼容 sh 脚本语法,并增加数组、关联数组、[[ ]]、进程替换、Brace Expansion、$RANDOM 等特性。登录时读取 /etc/profile 与 ~/.bash_profile(或 ~/.profile),交互式非登录 shell 读取 ~/.bashrc。
脚本首行 #!/bin/bash 指定解释器;若需最大可移植性用 #!/bin/sh 并避免 bash 扩展。生产脚本建议启用 set -euo pipefail,让错误、未定义变量与管道失败尽早暴露。
语法
bash [选项] [命令字符串 | 脚本文件 [参数...]]
选项
-c 字符串:执行给定命令字符串-i:强制交互模式-l:作为登录 shell 启动-n:只做语法检查,不执行-x:打印执行的每条命令(调试)-e:命令失败即退出-u:使用未定义变量时报错-o pipefail:管道中任一命令失败则整体失败--norc、--noprofile:跳过对应启动文件
实例
# 执行单条命令并传入参数
bash -c 'echo "参数: $0 $1"' hello world
# 只检查脚本语法,不运行
bash -n deploy.sh
# 打开命令跟踪,定位脚本在哪一步出错
bash -x deploy.sh
# 生产脚本推荐开头
set -euo pipefail
# 以登录 shell 重新加载环境
exec bash -l
# 交互式调试:加载脚本后进入提示符
bash -i -c 'source ./lib.sh; declare -F'
脚本中的 $0 是脚本路径,$1 起为位置参数;source 在当前 shell 执行文件,而 bash file 会启动子进程,变量不会回传。