sh shell 代码 - 检索命令结果

发布于 2024-09-03 09:06:08 字数 146 浏览 5 评论 0原文

如何编写一个简单的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱格式化 2024-09-10 09:06:09

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

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

或更简单:

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

注意:

  • “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:

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

Or even simpler:

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

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.

下壹個目標 2024-09-10 09:06:09
#!/bin/sh
R=$(who | grep " :0 ")
echo $R
if [ "$R" != "" ]; then
    echo "hi"
fi
#!/bin/sh
R=$(who | grep " :0 ")
echo $R
if [ "$R" != "" ]; then
    echo "hi"
fi
独闯女儿国 2024-09-10 09:06:09
if who | grep " :0 "
then
    echo "hi"
fi

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

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

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 "

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文