쉘 스크립트의 오류 억제

쉘 스크립트의 오류 억제

다음과 같은 스크립트를 실행하고 싶습니다.

나에게는 "Cats"가 있습니다.
result=command $i |awk '{print $2}' ## 정확한 답을 줄 수도 있고 "명령을 찾을 수 없음"과 같은 오류를 줄 수도 있습니다.
echo "$i - $result"  
완벽한

각각에 대해 $i다음을 인쇄하고 싶습니다.

$i - $result # 성공한 경우
$i - NO RESULT # 명령을 찾을 수 없다는 오류가 발생하는 경우

답변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

Read는 쉘의 표준 입력에서 한 줄씩 읽습니다. 를 사용하려고 하면 루프의 일부가 실행되기 전에 프로세스를 종료해야 합니다 for cmd in $(cat). cat위 루프를 사용하면 라인이 표준 입력에 도달하면 각 반복이 완료됩니다.

result변수는 명령 대체의 출력을 가져옵니다. 명령 대체는 명령의 출력을 반환하거나 echo명령이 $cmd0이 아닌 종료 상태로 종료된 경우를 반환합니다.

관련 정보