3. exit 命令
exit 命令使用来终止当前脚本程序的(结束当前进程),并返回一个退出状态码给调用者(终端或父进程)。
普通 shell 程序执行完毕最后一条命令才能退出,使用 exit 命令可以随时结束执行并退出。
命令格式
exit [n]
命令说明
- 无论 exit 命令是在函数中、循环中,都会结束整个程序的运行。
- exit 后面不跟参数,则返回 exit 之前一条命令执行后的状态值(即
$?)。 - exit 命令 后跟参数必须是 表示此脚本程序的退出状态,通常
0表示成功,其他值表示失败。此状态值 n 必须是 0~255 之间的数值(如果 n 的值不在 0~255 之间,则求 n 对 256 求余数的值)。 - 父进程可以通过特殊变量
$?来获取该状态值。
示例:
编写脚本文件 test_exit.sh 测试 exit 命令中途退出 Shell 程序,内容如下:
echo "程序开始"
exit 10
echo "程序结束"
执行结果
weimingze@mzstudio:~$ bash test_exit.sh
程序开始
weimingze@mzstudio:~$ echo $?
10
示例2
编写文件 make_chapter_dir.sh ,此程序有一个整数的参数表示章节,创建一系列文件夹,如 ./make_chapter_dir.sh 15,程序则创建 chapter_15/video、chapter_15/mp4、chapter_15/code三个文件夹。
if [ $# -ne 1 ]; then
echo -e "USAGE:\n\t./make_chapter_dir.sh xx"
exit 1;
fi
# 使用printf 命令格式化字符串
chapter_dir=`printf "chapter_%02d\n" $1`
echo "mkdir" $chapter_dir
mkdir -p ${chapter_dir}/video
mkdir -p ${chapter_dir}/mp4
mkdir -p ${chapter_dir}/code
exit 0
执行结果
weimingze@mzstudio:~$ chmod +x make_chapter_dir.sh
weimingze@mzstudio:~$ ./make_chapter_dir.sh
USAGE:
./make_chapter_dir.sh xx
weimingze@mzstudio:~$ echo $?
1
weimingze@mzstudio:~$ ./make_chapter_dir.sh 14
mkdir chapter_14
weimingze@mzstudio:~$ ./make_chapter_dir.sh 15
mkdir chapter_15
weimingze@mzstudio:~$ echo $?
0
weimingze@mzstudio:~$ tree .
.
├── chapter_14
│ ├── code
│ ├── mp4
│ └── video
├── chapter_15
│ ├── code
│ ├── mp4
│ └── video
├── make_chapter_dir.sh
...
└── 音乐
练习:
- 写一个 Shell 脚本程序
exit_demo.sh,当程序启动时,如果传入的参数少于 1 个则提示:USAGE: exit_demo.sh args并推出程序,如果有一个以上的参数,则打印参数个数后推出程序。
如下所示:
weimingze@mzstudio:~$ ./exit_demo.sh
USAGE: exit_demo.sh args
weimingze@mzstudio:~$ ./exit_demo.sh aaa
you give 1 argument.
weimingze@mzstudio:~$ ./exit_demo.sh aaa bbb
you give 2 argument.