2010-05-26 51 views
0

如何編寫一個簡單的shell腳本來檢查是否有人使用display :0?這不起作用:sh shell code - 檢索命令結果

if [ 'who | grep " :0 "' != "" ] 
then 
    echo "hi" 
fi 
+0

什麼問題?什麼是處理器拱?什麼是操作系統? – 2010-05-26 13:40:55

+0

@Moron:這是一個sh(bash?)腳本,所以操作系統是unix。 – 2010-05-26 13:59:41

+0

@BlueRaja:標題說的是ShellCode,我推測它是程序集操作碼字節,所以確切的操作系統和處理器體系結構很重要。我明白了,標題現在已經被編輯過了。 – 2010-05-26 14:20:59

回答

0
#!/bin/sh 
R=$(who | grep " :0 ") 
echo $R 
if [ "$R" != "" ]; then 
    echo "hi" 
fi 
+0

這也應該工作。什麼問題(或者你只是回答你自己的問題)? – 2010-05-26 14:42:15

+1

我在回答我自己的問題=] – 2010-05-26 15:22:02

0
if who | grep " :0 " 
then 
    echo "hi" 
fi 

注意,誰是不同版本的不同的輸出。對於GNU的coreutils 7.4版本,你需要誰的grep「(0」的代替grep的「0」

2

一些其他的答案的工作,但沒有需要捕捉的輸出grep的(使用$()或backtics)用於字符串比較,因爲grep的的退出狀態指示成功或失敗所以,你可以將其降低到這一點:

if who | grep -q ' :0 '; then 
    echo hi 
fi 

或者更簡單:

who | grep -q ' :0 ' && echo hi 

注:

  • 「如果」上的命令或命令的流水線操作。

  • 左方括號實際上是一個命令,'test'的另一個名稱。

  • q選項會抑制grep的輸出(在大多數版本中)。

  • 而不是調用who,grep和test,你可以調用who和grep。

  • 作爲另一個回答指出,你可能需要grep除了':0'之外的東西取決於你的系統。