while read -r cmd; do
result=$( command $cmd 2>/dev/null || echo "Just a boring error" )
printf '%s\t- %s\n' "$cmd" "$result"
done
Ler lerá da entrada padrão do shell, linha por linha. Se você tentar usar for cmd in $(cat)
, o processo cat
precisará sair antes que qualquer parte do loop seja executada. Com o loop acima, cada iteração é feita quando as linhas chegam na entrada padrão.
A variável result
obterá a saída da substituição do comando. A substituição do comando retornará a saída do comando ou o echo
se o comando em $cmd
tiver saído com um status de saída diferente de zero.