尝试在 bash 脚本中实现自我语法检查以在test.sh
执行脚本之前运行语法检查。
error_exit()
{
echo -e "$1" 1>&2
exit 1
}
bash -n "$(basename $BASH_SOURCE)"
RESULT=$?
if [ $RESULT == 0 ]; then
echo "[OK] Test pass"
else
error_exit "Something is not right :( \n check the sytntax"
fi
starting-script
bash -n
bash -x
,如果有一些严重的语法错误但像以下小错误,则与工作 相同:
echo "somthing" && sleep5&&
./test.sh: line 14: sleep5: command not found
被忽略...
有什么方法可以处理完整的语法检查,并且可以在某种“沙盒模式”/“模拟模式”中运行脚本以捕获所有可能的错误,如果有错误则返回?
已编辑 如果脚本必须将脚本的某些部分复制到远程服务器中,例如在数百个从属服务器(受监控的服务器)上安装 nagios 的脚本等。不幸的是,文本复制并不总是顺利进行,错误可能是由将脚本自动复制为文本时发生错误,如果检测到任何错误,检查并结束脚本很重要。