다음과 같은 스크립트를 실행하고 싶습니다.
나에게는 "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
명령이 $cmd
0이 아닌 종료 상태로 종료된 경우를 반환합니다.