我知道那set -e
是我的朋友,以便错误退出。但是,如果脚本是源程序,例如从控制台执行功能,该怎么办?我不想在出错时关闭控制台,我只想停止脚本并显示错误消息。
我需要检查美元吗?手工执行的每个命令使之成为可能?
这是一个myScript.sh
显示问题的示例脚本:
#!/bin/sh
set -e
copySomeStuff()
{
source="$1"
dest="$2"
cp -rt "$source" "$dest"
return 0
}
installStuff()
{
dest="$1"
copySomeStuff dir1 "$dest"
copySomeStuff dir2 "$dest"
copySomeStuff nonExistingDirectory "$dest"
}
该脚本的用法如下:
$ source myScript.sh
$ installStuff
这将关闭控制台。显示的错误cp
丢失。
我建议您使用一个脚本作为子外壳程序运行,可能会提供一个文件以读取函数定义。让该脚本errexit
为其自身设置shell选项。
source
从命令行使用时,“脚本”实际上是您的交互式外壳。退出意味着终止外壳会话。可能有一些解决方法,但是,如果要设置errexit
会话,最好的选择就是:
#!/bin/bash
set -o errexit
source file_with_functions
do_things_using_functions
附加好处:不会污染具有功能的交互式会话。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句