
私は、自分に合うように、また教育のために debootstrap を書き直しています。なぜ「functions」ファイル内の対話型コードに「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
3 つのシフトにより、引数からエラー コード、名前、文字列が削除され、残りの引数がスクリプトの 9 行目のループ$@
に適切に組み込まれます。for