Bash脚本在输出的开头打印数字

Bash脚本在输出的开头打印数字,bash,sh,Bash,Sh,我创建了一个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 如何删除带有数字的两行 我不知道这些数字是什么意思,也不知道

我创建了一个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
pgrep ls >/dev/null && echo "Xcode is running" || echo "Xcode is not 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
pgrep ls >/dev/null && echo "Xcode is running" || echo "Xcode is not running"

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

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

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

if pgrep "$PROCESS_NAME" > /dev/null ; then
    echo "Xcode is running"
else
    echo "Xcode is not running"
fi
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

这些数字是
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

这很奇怪;它是
grep
的标准,BSD版本的
pgrep
实现了它。你是在使用GNU版本的
pgrep
吗?@chepner:Yup,似乎没有,检查Xcode对我来说意味着这是在macOS上运行的,而macOS应该使用BSD版本。我尝试了
pgrep-q“$PROCESS\u NAME”
,效果很好。我正在使用macOS 10.12.1。谢谢你,这很奇怪;它是
grep
的标准,BSD版本的
pgrep
实现了它。你是在使用GNU版本的
pgrep
吗?@chepner:Yup,似乎没有,检查Xcode对我来说意味着这是在macOS上运行的,而macOS应该使用BSD版本。我尝试了
pgrep-q“$PROCESS\u NAME”
,效果很好。我正在使用macOS 10.12.1。非常感谢。