steeldriver mencionado corretamente no comentários que, para sua finalidade específica, é melhor usar pkill -f
, pois a saída de filtragem de ps
via grep
tem desvantagem de grep
próprio comando que aparece na lista ps
. Por outro lado, pkill
não faz isso e executa de forma limpa.
Quanto ao caso geral onde você deseja executar qualquer comando se um parâmetro posicional estiver em branco, há duas maneiras de abordá-lo. Um, salve a variável e verifique se a variável não está vazia:
var=$(ps aux | grep '[p]ostgres'|awk '{print $2}')
if ! [ "x$var" = "x" ]; then
sudo kill "$var"
fi
A outra maneira é via xargs
e --no-run-if-empty
(ou short-hand -r
):
ps aux | grep '[p]ostgres'|awk '{print $2}' | xargs --no-run-if-empty kill