退出带有错误的shell脚本

时间:2015-11-30 22:44:33

标签: shell

基本上我已经为家庭作业编写了一个shell脚本,但工作正常,但是我遇到了退出问题。本质上,脚本从用户读取数字,直到它读取负数,然后执行一些输出。我将脚本设置为退出并在收到错误代码时收到除数字之外的任何内容以及问题所在的位置。

代码如下:

if test $number -eq $number >dev/null 2>&1
then
   "do stuff"
else
    echo "There was an error"
    exit

问题是我们必须使用脚本将程序作为文本文件交付,每当我尝试编写程序脚本并测试错误情况时,它也会从脚本中退出。有一个更好的方法吗? 该脚本正在终端

中使用以下命令运行
script "insert name of program here"

谢谢

1 个答案:

答案 0 :(得分:1)

如果您正在测试的程序被调用为子进程,那么任何const void* void ** 命令都只会退出命令本身。您看到相反行为的事实意味着您必须以不同方式调用它。

从父测试程序调用脚本时,请使用:

exit

...将其作为子进程调用,而不是

# this runs "yourscript" as its own, external process.
./yourscript

...或...

# this is POSIX-compliant syntax to run the commands in "yourscript" in the current shell.
. yourscript

...后者中的任何一个都将运行所有命令 - 包括# this is bash-extended syntax to run the commands in "yourscript" in the current shell. source yourscript - 在当前shell中,修改其状态,或者在exit的情况下,{{1}或类似的,告诉它停止执行。