
나는 나에게 적합하고 교육을 위해 debootstrap을 다시 작성하고 있습니다. "함수" 파일의 상호 작용 코드 부분에서 "shift" 명령을 사용하는 이유는 무엇입니까? "shift"를 사용하기 위해 전송되는 인수는 그리 많지 않으며, 제가 아는 것처럼 함수 인수는 함수에서만 액세스할 수 있습니다.
예:
error () {
# <error code> <name> <string> <args>
local err="$1"
local name="$2"
local fmt="$3"
shift; shift; shift
if [ "$USE_DEBIANINSTALLER_INTERACTION" ]; then
(echo "E: $name"
for x in "$@"; do echo "EA: $x"; done
echo "EF: $fmt") >&4
else
(printf "E: $fmt\n" "$@") >&4
fi
exit $err
}
답변1
세 개의 시프트는 인수에서 오류 코드, 이름 및 문자열을 제거하므로 나머지 인수는 편리하게 스크립트 9행의 루프 $@
에 포함됩니다.for