Python 带有多个paperill命令的Bash脚本在出现笔记本错误时不会失败
我有一个Python 带有多个paperill命令的Bash脚本在出现笔记本错误时不会失败,python,bash,jupyter-notebook,jupyter,papermill,Python,Bash,Jupyter Notebook,Jupyter,Papermill,我有一个refresh\u data.sh文件,其中包含多个造纸机命令,例如: papermill notebook_1.ipynb output_1.ipynb -p start "2017-12-01" -p date "2017-12-31" papermill notebook_2.ipynb output_2.ipynb -p start "2018-01-01" -p date "2018-01-31" 如果在运行第一个笔记本时出错,进程将继续执行第二个笔记本 换句话说,其中一个笔
refresh\u data.sh
文件,其中包含多个造纸机命令,例如:
papermill notebook_1.ipynb output_1.ipynb -p start "2017-12-01" -p date "2017-12-31"
papermill notebook_2.ipynb output_2.ipynb -p start "2018-01-01" -p date "2018-01-31"
如果在运行第一个笔记本时出错,进程将继续执行第二个笔记本
换句话说,其中一个笔记本中的错误不会“破坏”整个脚本
就我所记得的普通python脚本而言,如果bash脚本中的某个命令出现错误,就会中断整个脚本的执行
在这种情况下,bash脚本的标准行为是什么?我可以更改它,使它在出现错误时立即停止吗?如果您的bash脚本配置为:
set-e
如果命令出错,它将失败:
您可以使用以下方式运行造纸机:
--记录输出
,以获取有关笔记本失败原因的更多信息
papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output
要捕获笔记本执行结果,您始终可以使用$?
捕获任何先前命令的结果:
papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output
notebook_result=$?
if [[ ${notebook_result} -eq 0 ]]; then
echo "All good"
else
echo $notebook_result
fi
papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output
notebook_result=$?
if [[ ${notebook_result} -eq 0 ]]; then
echo "All good"
else
echo $notebook_result
fi