【问题标题】:How can I get a return code from an ssh command inside a bash function, that is sourced inside another script?如何从 bash 函数中的 ssh 命令获取返回码,该返回码来自另一个脚本?
【发布时间】:2017-08-16 12:43:43
【问题描述】:

我有一个 bash 脚本,其中包含一些如下所示的函数:

my_functions.sh:

do_remote_command () {
    ssh user@hostname "./runScript.sh $var1 $var2"
}

我通过另一个脚本调用此函数,该脚本正在获取上述函数,如下所示:

#!/bin/bash
source my_functions.sh
do_remote_command

我想从./runScript.sh 获取返回码。怎么说“给我底层命令的返回码”?

【问题讨论】:

  • 在函数末尾添加return $?。
  • do_remote_command的退出状态已经是最后执行的命令的退出状态,其退出状态是远程命令的退出状态。
  • @chepner 哦,你的意思是返回码一直向上传播?
  • 不完全是。如果你的远程命令没有最后运行runScript.sh,或者你的函数没有最后运行ssh,你就必须做一些更复杂的事情。
  • 你刚才说的很有可能是这样。

标签: bash shell ssh sh


【解决方案1】:

修改 my_functions.sh 为

do_remote_command () {
    ssh user@hostname "./runScript.sh $var1 $var2"
    return $?
}

...并且新脚本可以将返回值回显为

#!/bin/bash
source my_functions.sh
echo do_remote_command

【讨论】:

    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多