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

时间:2016-12-07 19:04:28

标签: 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

如何删除带有数字的两行?

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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