0

如何编写一个简单的 shell 脚本来检查是否有人使用 display :0?这不起作用:

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

3 回答 3

2

其他一些答案有效,但不需要捕获 grep 的输出(使用 $() 或 backtics)进行字符串比较,因为 grep 的退出状态将指示成功或失败。因此,您可以将其简化为:

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

或者更简单:

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

笔记:

  • “if”对命令或命令管道进行操作。

  • 左方括号实际上是一个命令,是“测试”的另一个名称。

  • q 选项抑制 grep 的输出(在大多数版本中)。

  • 您可以只调用 who 和 grep,而不是调用 who、grep 和 test。

  • 正如另一个答案指出的那样,您可能需要 grep 查找除“ :0 ”之外的其他内容,具体取决于您的系统。

于 2010-05-27T21:41:56.960 回答
0
#!/bin/sh
R=$(who | grep " :0 ")
echo $R
if [ "$R" != "" ]; then
    echo "hi"
fi
于 2010-05-26T14:33:43.357 回答
0
if who | grep " :0 "
then
    echo "hi"
fi

请注意,对于不同版本的who , who 的输出是不同的。对于你需要grep '(:0'不是grep " :0 "的 GNU coreutils 7.4 版本

于 2010-05-26T14:42:22.697 回答