Suprimir erro no shell script

0

Eu quero executar um script como abaixo:

for i in 'cat';do 
result=command $i |awk '{print $2}'  ## it may give us the exact anwer or error like "command not found"
echo "$i - $result"  
done

para cada $i , desejo imprimir:


$i - $result    # if success
$i - NO RESULT  # if I got command not found error

    
por Gowtham 20.02.2017 / 18:58

1 resposta

1

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.

    
por 20.02.2017 / 21:33

Tags