如何捕获/ bin / bash:解释器错误

时间:2019-04-30 20:24:35

标签: bash csh

最近在运行在csh shell中执行的bash脚本时遇到了一个问题。输出:/ bin / bash:错误的解释器:没有这样的文件或目录。问题是bash不在环境路径上。添加bash之后,此问题已修复。我想确保将来,如果由于某种原因再次发生这种情况,我可以处理。我不知道这是什么退出代码?还是只是在stderr上打印出来?我想抓住这一点,使主脚本失败。关于如何处理的任何想法?

我有这个部分:

bash sc142.sh

#####################################################################
# Check for processing errors
#####################################################################
if ($status != 0) then
    exit (-1)
endif

2 个答案:

答案 0 :(得分:1)

退出代码将为非零。确切的退出代码取决于环境。您可能会得到127(找不到命令),但在某些shell中可能还会得到另一个非零退出代码。

csh脚本中,您可以设置-e选项,如果任何命令失败,该选项将导致脚本立即退出。

#!/bin/csh -e
false
echo not printed

答案 1 :(得分:1)

我在Debian上尝试过此操作,错误的解释器错误的退出状态为126。因此,您可以这样做:

/path/to/scriptname arg ...
if ( $status == 126 ) then
    echo "scriptname failed"
    exit 1
endif

请注意,可能会产生误报。如果您正在运行的脚本中的最后一条命令以状态126退出,您将无法分辨出差异。