에서 배쉬 참조 설명서 :
${parameter:?word}
경우 parameter
null 또는 설정 해제의 확장 word
(또는 그 결과에 대한 메시지 경우 word
는, 종료 대화 형이 아닌 경우 존재하지 않는)은 표준 에러와 쉘에 기록됩니다. 그렇지 않으면의 값 parameter
이 대체됩니다.
분명하지는 않지만 여기서 "표준 오류" 는 쉘 의 표준 오류 를 의미합니다 . 당신이 할 때 echo … 2> testfile
당신의 표준 오류를 리디렉션 echo
. 둘 다 일반적으로 터미널에서 끝나지만 동일하지 않습니다.
서브 쉘을 작성 하고 표준 오류를 재 지정하려는대로 작동 시키려면 다음을 수행하십시오 .
(echo ${var:?"This var is not set"}) 2> testfile
이것은 또한 작동합니다 :
{ echo ${var:?"This var is not set"}; } 2> testfile
실제 명령 ( echo
)은 이미 재 지정된 서브 쉘의 표준 오류를 상속하므로 효과적으로이 재 지정이 두 가지 모두에 영향을 미칩니다. 명령이 언제인지는 중요하지 echo
않지만 오류 메시지를 리턴하는 명령이 있습니다. 비교:
unset var
(dd ${var:?"This var is not set"}) 2> testfile
cat testfile
var=foo
(dd ${var:?"This var is not set"}) 2> testfile
cat testfile