常遇到在 shell 脚本的开始使用 set
命令的情况。
0. set -e
-e 参数,通过 help set
,给出的说明:Exit immediately if a simple command exits with a non-zero status.(当一个 command 命令返回值为 0 时,命令执行成功,非零表示失败)。在”set -e”之后出现的代码,一旦出现了返回值非零,整个脚本就会立即退出。(通过 $? 查看命令的返回状态)
1. $0/1/2
$0/1/2、$#、$@ 本质上是解析执行脚本时传递进来的参数。就好比 C 语言中的:
int main(int argc, char* argv[]){
...
}
- $#:# 一般表示个数,等同于 argc
- $@:全部参数,等同于 argv
- $0:当前脚本名,等同于 argv[0]
- $1:argv[1]
- $2:argv[2]
- …
- ${10}:参数 > 9 必须包括在大括号内;
2. $?
$?:exit status variable,$? 记录着一个命令(或者函数、脚本等)的退出状态;
SUCCESS=0 if [$? -eq $SUCCESS] then echo "$1 can be installed" else echo "$1 cannot be installed" fi
3. basename/dirname
- basename:去除(strip)路径信息;
- dirname:去除最后一层文件信息;
dirname /usr/bin/ -> /usr