如何捕捉 /bin/bash: 错误的解释器错误
How to catch /bin/bash: bad interpreter error
最近在 运行 在 csh shell 中执行 bash 脚本时遇到了一个问题。这被输出:/bin/bash:错误的解释器:没有这样的文件或目录。问题是 bash 不在环境路径上。添加 bash 后,此问题已修复。我想确保将来,如果由于某种原因再次发生这种情况,我可以处理。我想知道这是什么退出代码?或者这只是在 stderr 上打印出来的?我想抓住这个并使主脚本失败。关于如何处理这个的任何想法?
我有这个片段:
bash sc142.sh
#####################################################################
# Check for processing errors
#####################################################################
if ($status != 0) then
exit (-1)
endif
退出代码将为非零。确切的退出代码取决于环境。您可能会得到 127(未找到命令),但您也可能会在某些 shell 中得到另一个非零退出代码。
在您的 csh
脚本中,您可以设置 -e
选项,如果任何命令失败,该选项将导致脚本立即退出。
#!/bin/csh -e
false
echo not printed
我在 Debian 上试过,错误解释器错误的退出状态是 126
。所以你可以这样做:
/path/to/scriptname arg ...
if ( $status == 126 ) then
echo "scriptname failed"
exit 1
endif
请注意,可能会出现误报。如果您 运行 脚本中的最后一个命令以状态 126
退出,您将无法区分。
最近在 运行 在 csh shell 中执行 bash 脚本时遇到了一个问题。这被输出:/bin/bash:错误的解释器:没有这样的文件或目录。问题是 bash 不在环境路径上。添加 bash 后,此问题已修复。我想确保将来,如果由于某种原因再次发生这种情况,我可以处理。我想知道这是什么退出代码?或者这只是在 stderr 上打印出来的?我想抓住这个并使主脚本失败。关于如何处理这个的任何想法?
我有这个片段:
bash sc142.sh
#####################################################################
# Check for processing errors
#####################################################################
if ($status != 0) then
exit (-1)
endif
退出代码将为非零。确切的退出代码取决于环境。您可能会得到 127(未找到命令),但您也可能会在某些 shell 中得到另一个非零退出代码。
在您的 csh
脚本中,您可以设置 -e
选项,如果任何命令失败,该选项将导致脚本立即退出。
#!/bin/csh -e
false
echo not printed
我在 Debian 上试过,错误解释器错误的退出状态是 126
。所以你可以这样做:
/path/to/scriptname arg ...
if ( $status == 126 ) then
echo "scriptname failed"
exit 1
endif
请注意,可能会出现误报。如果您 运行 脚本中的最后一个命令以状态 126
退出,您将无法区分。