1. ホーム
  2. arrays

[解決済み】Bashでコマンドライン引数を配列に変換する。

2022-04-13 18:13:38

質問

コマンドライン引数をbashスクリプトの配列に変換するには?

これを受けたいのですが。

./something.sh arg1 arg2 arg3

に変換し、それを

myArray=( arg1 arg2 arg3 )

で、スクリプトの中でさらにmyArrayを使えるようにします。

この前のSOの記事が近いですが、配列の作り方まで踏み込んでませんね。 Bashでコマンドライン引数をパースするには?

私は引数を通常のbashスクリプトの配列に変換する必要があります。私は他の言語(例えばPython)を使用することができることを理解していますが、bashでこれを行う必要があります。私は"append"関数または類似の何かを探していると思います?

UPDATE:私はまた、ゼロ引数をチェックし、デフォルトの配列値を割り当てる方法を尋ねたかったのですが、以下の回答のおかげで、これを動作させることができました。

if [ "$#" -eq 0 ]; then
  myArray=( defaultarg1 defaultarg2 )
else
  myArray=( "$@" )
fi

解決方法は?

実は、コマンドラインの引数は 実質的に はすでに配列のようなものです。少なくとも $@ 変数を配列のように使うことができます。つまり、このように実際の配列に変換することができるのです。

myArray=( "$@" )

引数を入力して、それを $@ 値を使用します。 set :

$ set -- apple banana "kiwi fruit"
$ echo "$#"
3
$ echo "$@"
apple banana kiwi fruit

引数構造の使い方を理解することは、配列のようなものが他にないPOSIXのshでは特に有効です。