远程SSH会话上的退出代码

问题描述 投票:0回答:1

我正在尝试捕获远程SSH脚本的退出代码:

ssh remoteuser@server"
        exit_on_error() {
          exit_code=$1
          if [ "$exit_code" -ne "0" ]; then
            >&2 "echo command failed with exit code ${exit_code}."
          fi
          echo "exit_code is $exit_code"
        }

        ls -la blah
        exit_on_error $? !!
"

我得到的是:

ls:无法访问等等:没有这样的文件或目录

bash:第3行:[:-ne:期望一元运算符

退出码是

blah当然不存在。我只是想捕获该命令的退出代码。我以为是本地变量与远程变量扩展,所以我尝试转义$ 1等,但无济于事。我尝试将其全部放在bash --login -c块中,但没有任何变化。

有什么想法我要去哪里吗?

bash ssh exit-code
1个回答
0
投票

这不起作用,因为在将字符串发送到服务器之前,变量已由bash解析。您可以通过使用单引号将发送的代码包装起来,或使用typeset在服务器上创建函数来省略此设置。注意,后一个选项仍然需要转义直接在字符串中使用的变量。]​​>

单引号:

© www.soinside.com 2019 - 2024. All rights reserved.