2010-12-31 15 views
0

J'ai besoin de définir une variable à l'intérieur d'un bash pour une boucle qui, pour une raison quelconque, ne fonctionne pas pour moi. Voici un extrait de mon script:Comment définir une variable dans un bash pour une boucle?

function unlockBoxAll 
{ 
appdir=$(grep -i "CutTheRope.app" /tmp/App_list.tmp) 
for lvl in {0..24} 
key="UNLOCKED_$box_$lvl" 
plutil -key "$key" -value "1" "$appdir/../Library/Preferences/com.chillingo.cuttherope.plist" 2>&1> /dev/null 
successCheck=$(plutil -key "$key" "$appdir/../Library/Preferences/com.chillingo.cuttherope.plist") 
if [ "$successCheck" -eq "1" ]; then 
echo "Success! " 
    else 
echo "Failed: Key is $successCheck " 
fi 
done 
} 

Comme vous pouvez le voir, j'essaie d'écrire à une variable dans la boucle avec:

key="UNLOCKED_$box_$lvl" 

Mais quand je fais ça, je reçois ceci:

/usr/bin/cutTheRope.sh: line 23: syntax error near unexpected token `key="UNLOCKED_$box_$lvl"' 
/usr/bin/cutTheRope.sh: line 23: `key="UNLOCKED_$box_$lvl"' 

Qu'est-ce que je ne fais pas correctement? Y a-t-il une autre façon de faire cela?

S'il vous plaît, aidez, merci.

Répondre

3

Utilisez

for lvl in 1 2 3 4 
do 
    key="UNLOCKED_${box}_$lvl" 
done 
  1. Vous étiez absent "faire"/emballage "fait" mots-clés dans le corps de la boucle

  2. $box_$lvl est traité par bash comme une variable avec le nom box_ suivi variable avec le nom lvl. C'est parce que _ est un caractère valide dans un nom de variable. Pour séparer le nom de la variable de suivre _, utilisez la syntaxe ${varname} comme indiqué ci-dessus

  3. {0..24} ne fonctionne pas dans bash v2 (que nos serveurs ont ici) si it works as a range shortcut on modern bash de sorte que ne devrait pas causer youproblems.

+0

Doh! Je suis tellement stupide! Lol: P Merci beaucoup! –

Questions connexes