変数を動的に追加する方法 次のスクリプトを作成しましたが、エラーが発生します。
#!/bin/bash
X='101 Hari BAN'
for i in "${X[@]}"
do
"V"$j=`echo $i|cut -d' ' -f$j`
echo "V"$j
j=`expr $j + 1`
done
出力は次のようになります。
V1=101
V2=Hari
V3=BAN
ベストアンサー1
まず、使用中でbash
繰り返したい場合別のもの、次の配列を使用します。
X=( 101 Hari BAN "many words" "a * in the sky" )
これにより、スペースとファイル名のグロービングパターンを含む文字列を適切に引用して正しく処理できます。
その後、配列を繰り返します。
X=( 101 Hari BAN "many words" "a * in the sky" )
for item in "${X[@]}"; do
done
その後、出力結果に問題があります。これにはカウンター合計を使用しますprintf
。
X=( 101 Hari BAN "many words" "a * in the sky" )
n=0
for item in "${X[@]}"; do
printf 'V%d=%s\n' "$(( ++n ))" "$item"
done
書式printf
文字列は、V%d=%s\n
「V
文字の後に整数、a、=
および一部の文字列が続きます。改行文字で終わります」を意味します。整数と文字列は残りのパラメータから取得されますprintf
。この変数はn
使用前に増分されますprintf
。
#!
通訳者を指す正しい行を追加すると、bash
作業は完了です。
出力は次のとおりです
V1=101
V2=Hari
V3=BAN
V4=many words
V5=a * in the sky
以下の説明によると、これは変数であると予想していますが、V1
出力V2
では明らかにテキストです。
今回もここで必要なのは別の変数ではなく配列だと思います。
実際、私たちがすでに持っている配列にはX
必要なデータが含まれているので、名前を変更するだけです。
#!/bin/bash
V=( 101 Hari BAN )
for i in "${!V[@]}"; do
printf 'V[%s] = %s\n' "$i" "${V[i]}"
done
つまり、単になどを使用して配列の要素にアクセスできます"${V[0]}"
。"${V[1]}"
V