SSH 命令的退出代码为 1

SSH 命令的退出代码为 1

为什么以下会返回 1:

ssh -tt server_name "sudo grep 'something' /path/to/file || [ $? = 1 ]"

直接在server_name上运行双引号里的命令,返回的是0,为什么ssh命令会被认为失败呢?

我在远程服务器上设置了用户的密钥。因此,如果我以用户 A 的身份登录到服务器 A,我只需执行以下操作:

ssh -tt server_name

并以 userA 身份登录到 server_name。所以,我知道这不是问题。是 -tt 吗?双引号?

答案1

$?双引号中的字符串在开始之前就已经在本地展开ssh。远程服务器很可能获得

… || [ 0 = 1 ]

因此退出状态1是可能的。

交换引号以将文字$?字符串传递给服务器。它将在远程端进行扩展:

ssh -tt server_name 'sudo grep "something" /path/to/file || [ $? = 1 ]'

相关内容