Primeiro de tudo, comece a usar $()
para substituição de comando em vez de mais antigo, problemático ''.
No caso, cat
está mostrando a mensagem de erro quando o arquivo não existe no fluxo STDERR (descritor de arquivo 2).
Com o comando susbstution, você está salvando apenas o que está no STDOUT para a variável PID
. Então, para se livrar da mensagem de erro quando o arquivo não existe, redirecione o descritor de arquivo 2 para /dev/null
:
PID=$(cat /usr/local/foo/var/run/foo.pid 2>/dev/null)
Em zsh
e ksh
derivadas, você pode usar o atalho para cat
:
PID=$(< /usr/local/foo/var/run/foo.pid 2>/dev/null)
Em bash
, você pode usar a=$(<file)
, mas não a=$(<file 2>/dev/null)
.