2010-05-26 87 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'之外的东西取决于你的系统。