【问题标题】:bash: return exit code from function and print out from her, but not the exit codebash:从函数返回退出代码并从她那里打印出来,但不是退出代码
【发布时间】:2014-10-17 06:47:37
【问题描述】:

我有这样的功能

function backup {
  do_backup
  printf "success"
  do_more_backup
  echo "success"
  if ... ; then
    echo 1
  else
    echo 0
  fi
}

我有一个这样的条件语句

if [[ ! $(backup) ]]; then
...

我无法将函数的输出输入到 shell 中,但它正在评估所有命令 - 我已经在调试模式下进行了检查。我想评估这个函数,所以它达到了她的目的,同时打印出一些日志消息,然后检查这个函数的退出代码是否一切成功。如何在 bash 中解决这个问题?以及如何避免打印出最后一个回显,它是一个状态,或者一个函数的退出代码,用于条件语句中的评估。

【问题讨论】:

  • [[...]] 在这里完全是多余的。正确且惯用的语法(一旦将 echo 更改为 return)就是 if ! backup; then...
  • 我对 bash 没有太多经验,因此我犯了这个错误。谢谢三胞胎指导我。

标签: linux bash shell


【解决方案1】:

请使用return 1 return 0 而不是echo

【讨论】:

  • 这个问题不是很清楚,但我想这是正确的答案。
  • 代表Szymon Błaszczyński并将条件语句更改为 if !备份;那么也是需要的。您可以将 cmets 添加到您自己的问题中。他们比编辑答案更好,因为人们会仔细检查它是否有意义。
最近更新 更多