在 shell 编程中,要慎用 exit 0。首先必须弄清楚exit 0 不是 return 0, 区别在于 return 0用于函数中,表示函数执行成功并返回 0;而 exit 0 则表示当前程序执行成功并且直接退出当前执行脚本或程序。相反,return -1 表示函数执行失败返回错误; exit 1(或大于 1)表示程序执行失败并退出程序。exit 用来返回进程结束时的状态,一般在父shell中使用变量 $? 来获取子shell 的退出状态,判断子shell是否执行成功。
在Shell脚本中,可以使用特殊变量$?来获取上一个命令的执行结果。如果上一个命令成功执行,$?会返回0;如果失败,则返回非0值。
- exit 0 :正常运行程序并退出程序。使用
echo $?返回0,也就是说调用环境认为你的程序执行正常。 - exit 1 :非正常运行导致退出程序,也可以是其他数字。系统程序对于程序运行错误是有约定含义的,不为 0 就表示程序运行出错。调用环境根据这个返回值,判断你的程序运行是否正常。
- return :用于返回值。若在主函数中,则会退出函数并返回一个值。
#!/bin/bash
# 执行一个命令
ls /some/directory
# 获取上一个命令的执行结果
result=$?
# 根据执行结果进行判断
if [ $result -eq 0 ]; then
echo "命令执行成功"
else
echo "命令执行失败,退出码为: $result"
fi
$ sh test.sh
test test.sh
命令执行成功
$ vi test.sh
$ sh test.sh
ls: cannot access './aa': No such file or directory
命令执行失败,退出码为: 2










网友评论