为什么以下会返回 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 ]'