다음을 고려하세요:
$ ksh -c '1(){ echo hi;};1'
ksh: 1: invalid function name
$ dash -c '1(){ echo hi;};1'
dash: 1: Syntax error: Bad function name
$ bash -c '1(){ echo hi;};1'
bash: `1': not a valid identifier
bash: 1: command not found
$ mksh -c '1(){ echo hi;};1'
hi
기본적으로,이 함수를 선언려고 1
하고 0
있는 것은위한 shorthands 것 true
하고 false
, 그러나 당신이 볼 수 있듯이 나는 기능에 숫자 이름을 사용하여 문제를 다 퉜다. 별명 및 두 자리 이름에서도 동일한 동작이 발생합니다.
질문은 "왜"입니까? POSIX가 의무화합니까? 아니면 그냥 본 같은 껍질?
이 질문과 관련된 질문 도 참조하십시오 .
0
이다 true
쉘 스크립트와 1
인 false
이 인식하지 못하는 읽는 경우 사람에 (정말, 0이 아닌 거짓으로 처리됩니다). 이것은 대부분의 다른 프로그래밍 언어와는 다릅니다.
true
쉘 에 0의 리턴 값이 있습니다. 그러나 산술 확장에서 $((...))
반환 상태는 1로 바뀌고 true
0은 false
C 언어 구문과 일치합니다. 예를 들어보십시오. bash -c 'echo $((1==1));echo $((1==2))'
이 질문 이외의 일을하려는 것은 실제로 행동을 "반전"하는 것이 었습니다. 내가 정확히 무엇을하려고했는지 보려면 여기 에 대한 대답의 마지막 예 를 참조하십시오. 어리석은 생각이지만 그럼에도 불구하고 효과가 있습니다