Google의 bash 스크립팅 스타일 가이드를 보고 종료 상태 변수를 참조하는 것을 확인했습니다.$? 여기.
if [[ "$?" -ne 0 ]]; then
error_message
fi
반환 값은 항상 숫자인 줄 알았는데, 이를 인용할 이유가 무엇이겠습니까?
이것은 단지 좋은 습관입니까("$@"와 같은 다른 특수 쉘 변수를 인용하고 싶기 때문에)?
답변1
추천
너는 이걸 읽어야 해훌륭한 답변자세한 내용은.
숫자가 포함된 설정은 IFS
코드를 손상시킬 수 있습니다.
$ IFS=0
$ echo test
$ [ $? -eq 0 ] && echo done
bash: [: : integer expression expected
일부 쉘은 IFS
환경( dash
, ash
)에서 상속할 수 있지만 일부는 그렇지 않습니다( bash
, zsh
, ksh
). 그러나 누군가가 환경을 제어할 수 있으므로 스크립트가 어쨌든 중단될 것입니다( $#
그리고 $!
영향도 받게 됩니다).
귀하의 예에서는 새로운 테스트를 사용했기 [[...]]
때문에 필드 분할이 꺼져 있으며 이 경우 인용이 필요하지 않습니다. 이전 테스트를 사용하는 경우 이는 중요합니다 [...]
.
$ IFS=0
$ echo test
$ [[ $? -eq 0 ]] && echo done
done