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