예를 들어
#!/bin/bash
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; then
echo "INT is an integer."
else
echo "INT is not an integer." >&2
exit 1
fi
">&2"를 제거할 때. 차이 없음. ">&2"를 추가해야 하는 이유는 무엇입니까?
답변1
차이점은 다음과 같습니다.
echo "INT is an integer."
표준 출력에 쓰고,
echo "INT is not an integer." >&2
표준 오류에 씁니다.
유닉스 세계에서 stdout
이것은 일반적으로 모든 것이 잘 작동할 때 사용되며, stderr
뭔가 잘못되었을 때 메시지를 인쇄하는 데 자주 사용됩니다.
기본적으로 stdout
둘 다 stderr
화면에 인쇄됩니다. 주요 차이점은 >
및 |
연산자가 stdout
기본적으로 캡처하지만 을 캡처하지 않는다는 것입니다 stderr
.
따라서 스크립트가 파이프 중앙에 있으면 파이프에 들어가는 대신 INT is an integer.
파이프를 따라 계속 내려가 화면에 인쇄됩니다 .INT is not an integer
답변2
이 문자열은 표준 출력을 표준 오류로 병합합니다. 이 작업을 수행하면 표준 오류에 대한 출력이 표시될 것으로 예상됩니다. 왜 이것이 필요하다고 생각하는지 잘 모르겠습니다.