1つずつ割り当てずにBashでn個の変数を作成しますか?

1つずつ割り当てずにBashでn個の変数を作成しますか?

明示的に割り当てずにシェルスクリプトでn個の変数を作成するには?var1、、...のループを作成するのと同じことを意味しますvar2var3たとえば、以前に設定した変数はvarx次のとおりです。x

read x

for ((a=0;a<x;++a)); do
 variable$a=${RANDOM}
done

x(今はそれが文字列である可能性を無視しましょう。しかし、明らかにこれはうまくいきません。どうすればいいですか?

私が本当に望むのは、スクリプトを実行するときにコマンドラインに書き込んだ各引数が、独自の変数、ARG1... ARG2、およびARGn...が値になることです。したがって、おそらくこれらの項目がたくさんあるでしょう。変数はパラメータに設定されます。${1}${2}${n}

ベストアンサー1

配列を使用したいようです。

read x

for (( a=0; a<x; ++a)); do
   variable[a]=$RANDOM
done

printf 'First value is %s\n' "${variable[0]}"

printf 'All values (one by one): %s\n' "${variable[@]}"
printf 'All values (as one string): %s\n' "${variable[*]}"

質問の2番目の部分は次のとおりです。

arg=( "$@" )

printf 'First command line argument: %s\n' "${arg[0]}"

$@また、特別な場所に保存せずに、すべてのコマンドライン引数(またはで発生したすべての作業)を簡単に繰り返すことができます。

for arg do
    printf 'Got command line argument: %s\n' "$arg"
done

おすすめ記事