【问题标题】:SSH Remote command exit code always get 0SSH 远程命令退出代码总是得到 0
【发布时间】:2020-05-15 16:40:49
【问题描述】:

我在尝试获取 SSH 远程命令退出代码时发现了一个奇怪的错误。 我不明白为什么它会得到不同的结果以及如何解释它。 有人可以指出我做错了什么或更好的方法来捕获远程 ssh 命令的退出状态。感谢任何帮助。

本地命令:

ssh_test/test.sh; echo $?;

+ exit 1 1

ssh 命令:(Ubuntu 18.04)

ssh 127.0.0.1 "ssh_test/test.sh; echo $?"

+ exit 1 0

test.sh

#!/bin/bash set -x exit 1

【问题讨论】:

  • 只是猜测,尝试不使用-e

标签: linux bash shell ssh exit-code


【解决方案1】:

0 是从echo 命令返回的退出代码。如果将退出代码分配给变量,则可以阻止它被 echo 的结果屏蔽。

【讨论】:

  • 我已经通过 "echo ${PIPESTATUS[0]}")" 获得了退出代码,但是在远程 SSH 环境中运行命令的结果不同。
  • 我已经做了另一个测试来重现错误,结果仍然是不同的事件我不使用 echo 命令。
【解决方案2】:

双引号应该用单引号。 回声$?如果我使用双引号执行 ssh 命令,将变为“0”。

ssh 127.0.0.1 'ssh_test/test.sh; echo $?'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多