最近在运行在csh shell中执行的bash脚本时遇到了一个问题。输出:/ bin / bash:错误的解释器:没有这样的文件或目录。问题是bash不在环境路径上。添加bash之后,此问题已修复。我想确保将来,如果由于某种原因再次发生这种情况,我可以处理。我不知道这是什么退出代码?还是只是在stderr上打印出来?我想抓住这一点,使主脚本失败。关于如何处理的任何想法?
我有这个部分:
bash sc142.sh
#####################################################################
# Check for processing errors
#####################################################################
if ($status != 0) then
exit (-1)
endif
答案 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
退出,您将无法分辨出差异。