sudo kill $(ps aux | grep '[p]ostgres'|awk '{print $2}')
Поскольку выше команды, я хочу, чтобы это выполнилось только если
$(ps aux | grep '[p]ostgres'|awk '{print $2}')
непусто, иначе это бросит меня ошибка как это
Как я должен достигнуть этого?
steeldriver правильно упомянул в комментариях, что для Вашей определенной цели, лучше использовать pkill -f
, начиная с фильтрации вывода ps
через grep
имеет оборотную сторону grep
сама команда, появляющаяся на ps
список. В отличие от этого,pkill
doeesn't делают это, и работает чисто.
Что касается общего случая, где Вы хотели бы выполнить любую команду, если позиционный параметр к нему является пробелом, существует два способа приблизиться к нему. Один, сохраните к переменной и проверке, если переменная не пуста:
var=$(ps aux | grep '[p]ostgres'|awk '{print $2}')
if ! [ "x$var" = "x" ]; then
sudo kill "$var"
fi
Другой путь через xargs
и --no-run-if-empty
(или стенография -r
):
ps aux | grep '[p]ostgres'|awk '{print $2}' | xargs --no-run-if-empty kill