bash shift
명령을 사용할 때 $#
의 인수 개수가 변경 되나요?
작성자 참고 사항 : 이 질문이 있었을 때이 커뮤니티에서 아직 찾지 못했습니다. 따라서 나는 단순히 그것을 시도하고 내 대답을 얻었습니다. 다른 사람에게 도움이 될 것이라고 생각했기 때문에 여기에서 배운 내용을 자율 질문 으로 게시했습니다. .
답변
예, 있습니다. 표준에 명시 적으로 필요 :
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
… 인수를 한 줄에 하나씩 인쇄합니다.
코멘트
- … 또는 " … 매개 변수 ' # '가 새로운 위치 매개 변수 수를 반영하도록 업데이트되었습니다. "
- 마지막 코드 스 니펫은
printf '%s\n' "$@"
또는for arg do echo "$arg"; done
로 대체 될 수 있습니다. 그러나 이것은 분명히shift
를 사용하지 않고 동일한 출력 만 생성합니다.