bash `shift` 명령이 인수 개수 `$#`을 변경합니까?

bash `shift` 명령이 인수 개수 `$#`을 변경합니까?

이것을 사용할 shift때 bash의 인수 수가 변경됩니까 $#?

작성자의 메모:제가 이 질문을 받았을 때 이 커뮤니티에서는 해당 질문을 찾을 수 없었습니다. 그래서 방금 해봤는데 답이 나오더군요. 다른 분들에게도 도움이 될 것 같아서 여기에 제가 배운 내용을 게시합니다. 스스로 대답하는 질문.

답변1

네 확실합니다,표준의 명확한 요구사항:

shift [n]위치 매개변수를 이동해야 합니다. 위치 매개변수 1은 매개변수 (1+n)의 값으로 지정되어야 하며,[...]그리고 매개변수 "#"은 새로운 위치 매개변수 수를 반영하도록 업데이트됩니다.

다음 스크립트를 고려해보세요.

#!/usr/bin/env bash
echo "$#"
shift
echo "$#"

script-file first second third그것을 호출하는 것은 인쇄 3뒤에 가 오는 것과 같습니다 2.

이는 다음과 같은 작업을 수행할 수 있음을 의미합니다.

#!/usr/bin/env bash
while [[ "$#" > 0 ]] ; do
    echo "$1"
    shift
done

...매개변수를 한 줄에 하나씩 인쇄합니다.

관련 정보