![この場合、なぜ「shift」コマンドを使用するのですか? [閉鎖]](https://linux33.com/image/97965/%E3%81%93%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%E3%81%AA%E3%81%9C%E3%80%8Cshift%E3%80%8D%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
私と教育に合わせて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