私はbashが初めてなので、質問に答えるための良いチュートリアルが見つかりません。
array=( item1 item2 item3)
for name in ${array[@]}; do
echo current/total
... some other codes
done
これの予想される出力として、「現在」と「合計」の値を計算します。
1/3
2/3
3/3
あらゆる種類のヒントをありがとう
私はbashが初めてなので、質問に答えるための良いチュートリアルが見つかりません。
array=( item1 item2 item3)
for name in ${array[@]}; do
echo current/total
... some other codes
done
これの予想される出力として、「現在」と「合計」の値を計算します。
1/3
2/3
3/3
あらゆる種類のヒントをありがとう
回答:
を使用して配列のインデックスにアクセスし、を使用して配列${!array[@]}
の長さにアクセスできます${#array[@]}
。例:
#!/bin/bash
array=( item1 item2 item3 )
for index in ${!array[@]}; do
echo $index/${#array[@]}
done
bash配列のインデックスはゼロであるため、実際に取得されることに注意してください。
0/3
1/3
2/3
あなたがカウントは1から実行したい場合は、交換することができます$index
によって$((index+1))
。あなたがしたい場合は値だけでなく、インデックスをあなたが使用することができます"${array[index]}"
。すなわち
#!/bin/bash
array=( item1 item2 item3 )
for index in ${!array[@]}; do
echo $((index+1))/${#array[@]} = "${array[index]}"
done
与える
1/3 = item1
2/3 = item2
3/3 = item3
echo ($index+1)/${#array[@]}
ますか?
インデックスが実際に配列のベースアドレスからのオフセットであると考える場合、ゼロインデックスは完全に有効です。方言ごとに異なりますが、実際はそれが標準です。古いJovial言語では、[0]
実際には配列の最大サイズが含まれていました。で始まった[1]
。
一部のBasic実装では、最初のインデックスとして、0
または1
最初のインデックスとして任意に選択できます。そして、少なくとも1つの塩基を使用すると、インデックスフロンに配列を指定することができます[n]
し[m]
。ここでn
およびは、以下であるm
限り、任意の整数値、負の値も持つことができます。インデックスがに対応するかのように、入力から値が減算されます。n
m
n
[index]
index-n = 0
n
ただし、独自のコードで同じことを行うことができます。この方法で配列の順序を逆にすることもできます。
dim array(0, abs(m-n));
step=sign(m-n);
if n > m then
base=m
else
base=n;
fi
このコード例は、実際には一部の言語のみです。もっと読みやすくしたかっただけです。ステップ変数は、正または負に関係なく移動する見かけの方向を制御するために使用され、実際に常に正からである配列に出入りするときに有効なインデックスを計算するために使用されます[0]
。
${array[@]}
二重引用符で囲む必要があることに注意してください。そうしないと、単語分割が実行され、などの入力で望ましくない結果が得られますarray=("item 1" "item 2" "item 3")
。