나는 POSIX 쉘 코드를 매년 검토하고 있습니다.
내가 하나 찾았을지도 몰라이상한라인, 나는 전에 그것에 대해 많이 몰랐습니다.
원래
[ $# -eq 3 ] && exit_code=$3 || exit_code=1
새로운 코드 - 더 간단해졌습니다.
exit_code=${3:-1}
이 두 가지 방법은 정확히 동일한 결과를 제공합니까?
어떤 차이점이 있는지 자세히 설명해주실 수 있나요?
답변1
이 두 가지 방법은 서로 다른 논리를 사용하는 것 같습니다.
[ $# -eq 3 ] && exit_code=$3 || exit_code=1
이것은,만약에 그리고 만약에, 위치 인수의 수( )는 $#
정확히 3과 동일하고, exit_code
변수는 세 번째 위치 인수의 값과 동일하게 설정됩니다. 그렇지 않으면 와 동일하게 설정되어야 합니다 1
.
exit_code=${3:-1}
이는 세 번째 위치 인수( 또는 설정되지 않은 경우) exit_code
의 값으로 설정됩니다 .1
이상세 가지 위치 매개변수.
exit_code
요약하자면, 위치 매개변수의 개수가 3개가 아니면 첫 번째 매개변수의 개수는 1로 설정되고, 두 번째 매개변수의 개수는 위치 매개변수의 개수와 관련이 없습니다.