2013-06-18 6 views
0

,구문 오류, 간접 확장 변수 선언 BASH에서

내가 변수 $ Lambda0_List 등이, 이전 코드의 입력 파일에서 읽 있음을 알아 두셔야합니다.

PARAM_ARRAY=("Lambda0" "N" "M" "Sigma") 

for i in "${PARAM_ARRAY[@]}" 

do 

List="$i"_List 

Vary="$i"_Vary 

Use_Range="$i"_Use_Range 

Initial_Str="$i"_Initial 

Final_Str="$i"_Final 

Step_Str="$i"_Step 

Initial=${!Initial_Str} 

Step=${!Step_Str} 

Final=${!Final_Str} 

if [ "${!Vary}" == "T" ] 

then 

    if [ "${!Use_Range}" == "T" ] 

    then 

    eval "$List=(`seq $Initial $Step $Final `)" 

    echo "$i : vary, use_range" 

    else 

    echo "$i: vary, use list" 

    fi 

fi 

done 

은 '('구문 오류를

01 불필요한 토큰 근처

구문 오류 예외

일반적으로 오류를 해석하고 해결책을 찾을 수 있지만 "("은 예기치 않은 토큰입니다.

편집 :이 라인은 나의 스크립트에서 나는 쉘에서 실행하면 작동하지만,없는 것으로 나타났습니다

,

편집 : 내가 찾은

문제가있는 줄을 손보는 주위 주석을 달았을 때에도 구문 오류가 발생합니다!

/test.sh : 라인 266 : 예기치 않은 토큰 근처의 구문 오류 '('

./test.sh : 라인 266 : ######## eval "$List=( 서열 초기 $ 단계 $의 마지막`$) " '

+0

무엇입니까 변수 값? – Koterpillar

+0

변수 할당을 포함하도록 질문을 업데이트했습니다. 비록 자본이 eval 문과 다르게 보일지라도, 그들은 내 코드에서 똑같이 입력됩니다. –

답변

0

일부 이전 코드를 살펴본 후 'vs'와 관련된 문제가 해결되어이 오류가 발생하지 않았습니다. 나는 BASH에 익숙하지 않았으므로 위의 100 줄을 인용 부호로 묶어서 ')'라는 오류 메시지가 나타나기를 기대하지 않았습니다.

0

마지막! a 대신 a)

+0

이 질문을 제출하는 데 오타가 있었지만 여기에서 문제를 해결했습니다. 나는 내가 간접적 인 확장을하지 않아도 주변의 변수 이름을 셔플 시도했습니다, 그래서 다음과 같습니다 평가 "$ 목록 = (''서열이 초기 $ 단계 $ 결승을''$)", 그리고 다시 말하지만, 터미널에서는 작동하지만 스크립트에서는 작동하지 않습니다. –

+0

입력하는 대신 실제 코드를 붙여 넣을 수 있습니까? 원래 스크립트 – dannrob

+0

에 어떤 다른 오류가 있을지 알 수 있습니다. –

0

왜 elif 또는 대소 문자를 사용하지 않습니까?

평가 "$ 목록 = (seq $Initial $Step $Final)"대신

평가의

"$ {목록 = (seq $Initial $Step $Final)}"또는 평가 "$ {목록 = seq $Initial $Step $Final}는"