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



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

我有这个部分:

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

我在 Debian 上尝试过这个,一个错误的解释器错误的退出状态是 126 。所以你可以做到:

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

请注意,误报是可能的。如果您正在运行的脚本中的最后一个命令以状态 126 退出,您将无法区分。

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

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

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

最新更新