从ssh命令退出代码

时间:2016-04-19 18:49:08

标签: bash unix ssh exit-code

我试图从此脚本中检索代码返回:

#!/bin/bash
echo "CM  1"
ssh -i key/keyId.ppk user@X.X.X.X "
grep blabla ddd
if [ ! $? -eq 0 ]; then exit 1; fi
"
echo $?

但是最后一个命令echo $?返回0而不是1。

如果尝试单独运行(不是作为脚本):

  • ssh命令:ssh -i key/keyId.ppk user@X.X.X.X
  • grep blabla ddd =>我得到了msg" grep:ddd:没有这样的文件或目录"
  • 然后:如果[! $? -eq 0];然后退出1;网络
  • 然后:echo $? =>它按预期返回1

你知道为什么它在我的脚本中不起作用吗?

谢谢

1 个答案:

答案 0 :(得分:1)

此代码

ssh -i key/keyId.ppk user@X.X.X.X "
grep blabla ddd
if [ ! $? -eq 0 ]; then exit 1; fi
"

评估您的shell中的$?而不是远程评估中的$,因为ssh -i key/keyId.ppk user@X.X.X.X ' grep blabla ddd if [ ! $? -eq 0 ]; then exit 1; fi ' 未在单引号中转义。你应该逃避它以达到预期的行为。一次避免在本地shell中进行评估,第二次避免在将其传递给远程端的bash时进行评估。或者更确切地说将命令放在单引号中:

var defText = ''+
'   <div class="form-group col-md-12">'+
'       <h4 id="minimum-setp">{{title}}</h4>'+
'       <input type="text" class="form-control gcf_crud" id="txtUsuari" value="{{data}}"/>'+
'   </div>';
var defTextDisabled = $(defText).find('.gcf_crud').prop('disabled', true);