2013-03-20 33 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 

注:爲什麼你有\`?這樣的字符串是永遠不會是空的....