2010-12-31 17 views
0

어떤 이유로 든 나를 위해 작동하지 않는 for bash for loop 변수를 설정해야합니다. 당신이 볼 수 있듯이루프 용 bash 내부에서 변수를 설정하는 방법은 무엇입니까?

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 
} 

, 내가 가진 루프 내부 변수에 작성하려고 :

key="UNLOCKED_$box_$lvl" 

하지만 그렇게 할 때, 나는이 얻을 : 여기 내 스크립트의 발췌입니다

/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"' 

내가 옳지 않은 행동은 무엇입니까? 이것을 할 또 다른 방법이 있습니까?

감사합니다.

답변

3

사용

for lvl in 1 2 3 4 
do 
    key="UNLOCKED_${box}_$lvl" 
done 
  1. 당신이 누락 된

  2. $box_$lvl이 다음에 이름 box_의 변수로 bash에 의해 처리되는 루프 본문의 주위에/"완료"키워드 포장을 "어떻게" 변수 이름은 lvl입니다. 이는 _이 변수 이름에서 유효한 문자이기 때문입니다. 그 youproblems의 원인이 안됩니다 그래서 it works as a range shortcut on modern bash하지만 (우리 서버가 여기있는) bash는 V2에서 작동하지 않습니다

  3. {0..24} 위의 그림과 같이 _을 다음에서 변수 이름을 분리하려면 ${varname} 구문을 사용합니다.

+0

Doh! 나는 정말 바보 야! 롤 : P 정말 고마워요! –

관련 문제