Я новичок в написании сценариев bash, поэтому я не могу понять, как исправить (удалить) утешение вещей, которые находятся внутри оператора if (см. код ниже). Может ли кто-нибудь сказать мне, почему он делает такие вещи?
if pgrep "Electron" -n
then
killall Electron
else
echo "Visual Studio Code is already closed"
fi
Вы можете отключить перенаправление https://www.gnu.org/software/bash/manual/html_node/Redirections.html
if pgrep "Electron" -n > /dev/null
then
killall Electron
else
echo "Visual Studio Code is already closed"
fi
Когда вы передаете команду linux в операторе if, bash запускает эту команду, чтобы проверить ее код выхода. Код выхода этой команды будет использоваться для определения истинности или ложности. В bash 0 означает «истина», любой другой код выхода оценивается как «ложь».
Итак, поскольку bash выполняет команду, вы увидите ее вывод в терминале. Чтобы подавить вывод, вы можете использовать перенаправление
От man pgrep
на MacOS:
-q Do not write anything to standard output.
Таким образом, вы можете изменить свое состояние на:
if pgrep -q "Electron" -n
...
Более общее решение, которое должно работать с реализациями pgrep
, которые не поддерживают опцию -q
(например, в Ubuntu), а также с любым другим инструментом, будет перенаправлять стандартный вывод процесса на /dev/null
:
if pgrep "Electron" -n >/dev/null
...
Можете ли вы вставить вывод и указать на контент, который вам не нужен?