スクリプトのコマンドライン引数にアクセスする関数を 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 番目の引数であり、スクリプトの名前ではないことに注意してください。