sh shell 代码 - 检索命令结果
如何编写一个简单的 shell 脚本来检查是否有人使用 display :0
?这不起作用:
if [ 'who | grep " :0 "' != "" ]
then
echo "hi"
fi
How can I write a simple shell script that will check if someone using display :0
? This does not work:
if [ 'who | grep " :0 "' != "" ]
then
echo "hi"
fi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
其他一些答案有效,但无需捕获 grep 的输出(使用 $() 或反引号)进行字符串比较,因为 grep 的退出状态将指示成功或失败。因此,您可以将其简化为:
或更简单:
注意:
“if”对命令或命令管道进行操作。
左方括号实际上是一个命令,“test”的别称。
q 选项抑制 grep 的输出(在大多数版本中)。
您可以只调用 who 和 grep,而不是调用 who
正如另一个答案所指出的,根据您的系统,您可能需要 grep 除“:0”之外的其他内容。
正如另一个答案所指出的,您可能需要
Some of the other answers work, but there's no need to capture the output of the grep (using $() or backtics) for a string comparison, because grep's exit status will indicate success or failure. So you can reduce it to this:
Or even simpler:
Notes:
"if" operates on a command or a pipeline of commands.
Left square bracket is actually a command, another name for 'test'.
The q option suppresses grep's output (in most versions).
Instead of invoking who, grep, and test you can just invoke who and grep.
As another answer noted, you may need to grep for something besides ' :0 ' depending on your system.
请注意,不同版本的 who 的输出是不同的。who。对于 GNU coreutils 7.4 版本的 who,您需要 grep '(:0' 而不是 grep " :0 "
Note that the output of who is different for different versions of who. For the GNU coreutils 7.4 version of who you need grep '(:0' instead of grep " :0 "