bash `shift`コマンドは引数の数 `$#`を変更しますか?

bash `shift`コマンドは引数の数 `$#`を変更しますか?

これを使用するshiftと、bashの引数の数が変わりますか$#

作成者のメモ:私がこの質問を受けたとき、このコミュニティはその質問を見つけることができませんでした。それで、今やってみましたが答えが出ましたね。他の方にも役に立つと思いますので、ここで私が学んだ内容を投稿します。 自分で答える質問

ベストアンサー1

はい、確かに、標準の明確な要件:

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

...パラメータを1行に1つずつ印刷します。

おすすめ記事