Forループは変数ベクトルを繰り返します。

Forループは変数ベクトルを繰り返します。

forループとCaseステートメントがあります。 forループには多少大きな要素のリストがあり、Caseステートメントは1次元配列またはベクトルを割り当てます。この値は後で for ループで使用されます。次のコードがあります。

forループは、ベクトルの最初の値に対してのみこれを行います。たとえば、f = Cの場合「C」)isotope =(6012 6013);

for n in $isotope: 6013 ではなく 6012 だけを繰り返します。 f = Ceでも同じ問題が発生します。 58136だけループし、残りはループしません。

# loop through elements
for f in C Ce 
do
cd ${f}

case $f in 
   "Al") isotope=(13027) ;;
   "C")  isotope=(6012 6013);;
   "Ce") isotope=(58136 58138 58140 58142);;
esac

for n in $isotope

do

....# loop through elements
for f in C Ce 
do
cd ${f}

case $f in 
   "Al") isotope=(13027) ;;
   "C")  isotope=(6012 6013);;
   "Ce") isotope=(58136 58138 58140 58142);;
esac

for n in $isotope

do

....

ご協力ありがとうございます

フィルスナー

ベストアンサー1

Bashとkshでインデックス()なしで配列を参照することは、$fooインデックス()を持つ配列を参照するのと同じです。配列のすべての要素を取得する方法は、特別な値()を使用してインデックスを作成することです。拡張が正しく機能するには引用符が必要であることに注意してください。0${foo[0]}@"${foo[@]}"

zshで$fooインデックス()なしで拡張すると、null以外のすべての値が提供されます。

したがって、Bashまたはkshを使用すると仮定すると、その後はisotope=(6012 6013)次のものが必要です。

for n in "${isotope[@]}"; do
   ...

また見なさい:

おすすめ記事