首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含多个造纸厂命令的Bash脚本在出现笔记本错误时不会失败

包含多个造纸厂命令的Bash脚本在出现笔记本错误时不会失败
EN

Stack Overflow用户
提问于 2019-04-02 23:24:34
回答 1查看 800关注 0票数 2

我有一个包含多个造纸厂命令的refresh_data.sh文件,例如:

代码语言:javascript
复制
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脚本的标准行为是什么?我是否可以更改它,使其在出现错误时立即停止?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-04 05:23:22

如果您的bash脚本是使用:set -e配置的,那么如果命令出现错误,它将失败:

Automatic exit from bash shell script on error

代码语言:javascript
复制
#!/bin/bash
set -e
# Any subsequent(*) commands which fail will cause the shell script to exit immediately

您可以使用以下命令运行造纸厂:

--log-output以获取有关笔记本失败原因的更多信息。

代码语言:javascript
复制
papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output

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

代码语言:javascript
复制
  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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55478353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档