我有一个包含多个造纸厂命令的refresh_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"如果在运行第一个notebook时出现错误,该进程将继续执行第二个notebook。
换句话说,其中一个笔记本中的错误并不会“破坏”整个脚本。
据我所知,对于普通的python脚本,如果bash脚本中的某个命令有错误,就会中断整个脚本的执行。
在这种情况下,bash脚本的标准行为是什么?我是否可以更改它,使其在出现错误时立即停止?
发布于 2019-04-04 05:23:22
如果您的bash脚本是使用:set -e配置的,那么如果命令出现错误,它将失败:
Automatic exit from bash shell script on error
#!/bin/bash
set -e
# Any subsequent(*) commands which fail will cause the shell script to exit immediately您可以使用以下命令运行造纸厂:
--log-output以获取有关笔记本失败原因的更多信息。
papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output要捕获notebook执行结果,您始终可以使用$?捕获以前任何命令的结果
papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output
notebook_result=$?
if [[ ${notebook_result} -eq 0 ]]; then
echo "All good"
else
echo $notebook_result
fihttps://stackoverflow.com/questions/55478353
复制相似问题