带有多个papermill命令的Bash脚本在出现笔记本错误时不会失败

2024-06-16 13:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个refresh_data.sh文件,其中包含多个papermill命令,例如:

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脚本的标准行为是什么?我能把它改一下,一旦有错误就停止吗?在


Tags: 文件命令脚本bashoutputdatadatesh
1条回答
网友
1楼 · 发布于 2024-06-16 13:26:42

如果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

您可以使用以下方式运行papermill:

log-output获取有关笔记本失败原因的详细信息。在

^{pr2}$

要捕获笔记本的执行结果,您可以始终使用$?捕获以前任何命令的结果:

  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

相关问题 更多 >