関数内で呼び出し元のコマンドライン引数にアクセスするにはどうすればいいですか? 質問する

関数内で呼び出し元のコマンドライン引数にアクセスするにはどうすればいいですか? 質問する

スクリプトのコマンドライン引数にアクセスする関数を bash で作成しようとしていますが、引数は関数の位置引数に置き換えられます。明示的に渡されない場合、関数がコマンドライン引数にアクセスする方法はありますか?

# Demo function
function stuff {
  echo $0 $*
}

# Echo's the name of the script, but no command line arguments
stuff

# Echo's everything I want, but trying to avoid
stuff $*

ベストアンサー1

引数を C スタイル (引数の配列 + 引数の数) にしたい場合は、$@と を使用できます$#

$#引数の数を返します。
$@すべての引数を返します。 これを配列に変換するには、 を使用しますargs=("$@")

たとえば次のようになります。

args=("$@")
echo $# arguments passed
echo ${args[0]} ${args[1]} ${args[2]}

${args[0]}ここでは実際には 1 番目の引数であり、スクリプトの名前ではないことに注意してください。

おすすめ記事