bash脚本在输出开始时打印数字



我创建了一个bash脚本来验证xcode进程是否正在运行:

#! /bin/bash
PROCESS_NAME=Xcode
if pgrep $PROCESS_NAME; then
    echo "Xcode is running";
else
    echo "Xcode is not running";
if

但是,当Xcode运行时,BASH脚本将获得此输出:

16115
16119
Xcode is running

如何用数字删除两行?

我不知道数字是什么意思或为什么要打印数字

pgrep正在打印匹配过程的过程ID。告诉它与-q保持安静。

if pgrep -q "$PROCESS_NAME"; then
    echo "Xcode is running"
else
    echo "Xcode is not running"
fi

如果您的pgrep版本不支持-q,只需将其标准输出重定向到/dev/null

if pgrep "$PROCESS_NAME" > /dev/null ; then
    echo "Xcode is running"
else
    echo "Xcode is not running"
fi

只需将标准ouput重定向到 /dev/null

pgrep ls >/dev/null && echo "Xcode is running" || echo "Xcode is not running"

这些数字是stdout的一部分,命令pgrep产生,您可以通过将其重新引导到/dev/null

来抑制它。
#!/bin/bash
PROCESS_NAME=Xcode
if pgrep "$PROCESS_NAME" >/dev/null; then
    echo "Xcode is running";
else
    echo "Xcode is not running";
fi

脚本的最后一行中的错字,应该是fi

您也可以向前走一步,并抑制错误消息,如果通过执行2>&1丢弃的话,即

if pgrep "$PROCESS_NAME" >/dev/null 2>&1; then

最新更新