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

Как мне убрать две строки с цифрами?

Я понятия не имею, что означают цифры или почему цифры напечатаны

3 ответа

Решение

pgrep печатает идентификаторы процессов соответствующих процессов. Скажите это, чтобы быть спокойным с -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

Просто перенаправьте стандартный вывод на /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
Другие вопросы по тегам