明示的に割り当てずにシェルスクリプトでn個の変数を作成するには?var1
、、...のループを作成するのと同じことを意味しますvar2
。var3
たとえば、以前に設定した変数は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