bash で既に定義されている変数をインクリメントするにはどうすればよいですか? これが私が意味することです:
ID1="YAY1"
ID2="YAY2"
for (( c=1; c<=3; c++ ))
do
if [ "$SOMEOTHERVAR" = "ID$c" ]; then BLAH; fi
done
問題は、比較を行うために既に定義されている変数をインクリメントすると、ID1 が YAY1 に等しいのではなく、ID$c が文字列 ID1 に等しいと見なされるため、if ステートメントが常に false と評価されることです。それが理にかなっていることを願っています。
ご協力ありがとうございました!
** * ***更新* ** * **
助けてくれてありがとう。最もクリーンな解決策は、単一の配列とカットを組み合わせて使用することでした。最もクリーンな方法ではないかもしれませんが、うまく機能します。以下にスニペットを示します。
# CONTACTS
declare -a EMAIL
EMAIL[1]="JS:jsmith@example.com"
EMAIL[2]="JD:jdoe@example.com"
EMAIL[3]="JK:jkennedy@example.com"
# FUNCTIONS
function EMAIL {
for i in "${!EMAIL[@]}"; do
POINTER="`echo ${EMAIL[$i]} | cut -d":" -f1`"; ADDRESS="`echo ${EMAIL[$i]} | cut -d":" -f2`";
if [ "$POINTER" = "$PEMAIL" ]; then TO="$ADDRESS"; fi
if [ "$POINTER" = "$SEMAIL" ]; then CC="$ADDRESS"; fi
done
}
PEMAIL と SEMAIL は、スクリプトの別の部分でデータベースから取得されるコンパレータです。