1.参数
sh 执行 shell 脚本
参数
- -x 调试模式,在执行过程中,将每一条被执行的命令行显示出来。
- -e 遇到错误时立即退出,如果一个命令返回非零状态(即发生错误),则立即退出整个脚本。
2.例子
a.txt 内容有:
this is a.txt
test.sh 内容有:
echo "- - - 1 - - -"
cat a.txt
echo "- - - 2 - - -"
cat b.txt
echo "- - - 3 - - -"
执行结果:
zxm@zxm-pc:~/shell$ sh test.sh
- - - 1 - - -
this is a.txt
- - - 2 - - -
cat: b.txt: 没有那个文件或目录
- - - 3 - - -
zxm@zxm-pc:~/shell$ sh -x test.sh
+ echo - - - 1 - - -
- - - 1 - - -
+ cat a.txt
this is a.txt
+ echo - - - 2 - - -
- - - 2 - - -
+ cat b.txt
cat: b.txt: 没有那个文件或目录
+ echo - - - 3 - - -
- - - 3 - - -
zxm@zxm-pc:~/shell$ sh -e test.sh
- - - 1 - - -
this is a.txt
- - - 2 - - -
cat: b.txt: 没有那个文件或目录
3.脚本退出状态码
在 Unix 和类 Unix 系统(如 Linux)中,每个执行的命令或脚本完成后都会返回一个退出状态码,它是一个介于 0 到 255 之间的整数。这个状态码通常用来表示命令执行的结果:0 表示成功,非零值表示不同的错误情况。
要获取命令执行后的退出状态码,可以使用特殊变量 $?。该变量保存了最后执行的命令或脚本的退出状态码。
查看退出状态码
zxm@zxm-pc:~/shell$ cat a.txt
this is a.txt
zxm@zxm-pc:~/shell$ echo $?
0
zxm@zxm-pc:~/shell$ cat b.txt
cat: b.txt: 没有那个文件或目录
zxm@zxm-pc:~/shell$ echo $?
1
主动设置退出状态码
#!/bin/bash
# 检查文件是否存在
if [ -f "a.txt" ]; then
echo "File exists."
exit 0 # 成功退出
else
echo "File does not exist."
exit 1 # 错误退出
fi