2013-03-20 108 views
0

我在if语句的!=部分遇到了一些问题。从本质上讲,本声明是有效的,但是执行此操作会产生[: 1: !=: unexpected operator。我尝试使用-n执行,但无论出于何种原因,即使输出为空,使用-n仍会运行echo命令。如果在SSH命令中进行比较,使用sh -c

对此的任何帮助表示赞赏。我附上了下面的代码片段。

#!/bin/sh 

HOST=$1 
USER="/scripts/whoowns $HOST | tr -d '\r'" 

ssh -t $HOST -p 22 -l deehem "sh -c 'if [ "" != "\`$USER\`" ]; then echo "Username for $HOST: \`$USER\`"; fi' ; bash -login" 
+0

'“sh -c'if if”“”' – 2013-03-20 21:25:23

+0

啊好吧,算出这是因为“”是空白,是否有任何可行的替代方法''“ “!=”$ VAR“'? – 2013-03-20 21:28:53

回答

0

当你意识到,"bla "" bla"只是两个字符串连接在一起("bla bla")。

可以逃脱"\",但标准[test工具有一个选项,专门用于这项任务:

-n STRING 
      the length of STRING is nonzero 

    -z STRING 
      the length of STRING is zero 

注:为什么你有\`?这样的字符串是永远不会是空的....