bash shift
コマンドを使用すると、 $#
の引数数は変更されますか?
作成者からのメモ:この質問があったとき、このコミュニティでは(まだ)見つかりませんでした。したがって、私は単にそれを試し、私の答えを得ました。他の人に役立つかもしれないと思ったので、ここで学んだことを 自己回答の質問 として投稿しました。 。
回答
はい、そうです、標準で明示的に要求されています:
shift [n]
位置パラメータをシフトします。位置パラメータ1にはパラメータ(1 + n)の値を割り当て、 […] パラメータ「#」を更新して新しい位置の数を反映します。パラメータ。
次のスクリプトを検討してください:
#!/usr/bin/env bash echo "$#" shift echo "$#"
は3
の後に2
を出力します。
これは私たちができることを意味します例:
#!/usr/bin/env bash while [[ "$#" > 0 ]] ; do echo "$1" shift done
…引数を1行ずつ出力します。
コメント
- …または " …パラメータ'#'が更新され、新しい位置パラメータの数が反映されます。 "
- 最後のコードスニペットは
printf '%s\n' "$@"
またはfor arg do echo "$arg"; done
に置き換えることができます。ただし、これは明らかにshift
を使用せず、同じ出力のみを生成します。