2013-01-12 6 views
0

배열 변수 내에서 변수를 사용하려고했지만 예상대로 작동하지 않았습니다.배열 내부에서 변수를 사용하는 방법

CODE

ENV2[0]=567 
    ENV1[0]=123 
    ENV1[1]=789 
    if [ $1 -eq 1 ] 
    then 
    name=ENV1 
    echo "${name[0]}" 
    echo "${name[1]}" 
    else 
    name=ENV1 
    echo "${name[1]}" 
    fi 

출력 대신 "123"의 ENV1 그 인쇄 "ENV1"및 제 에코 부 빈 라인. 올바른 출력을 얻으려면 도와주세요. 초보자입니다. 감사합니다

+0

어떤 언어를 사용하고 있습니까? 보십시오 이름 = ENV1 [0] – rusty009

+0

안녕 Rusty009, 나는 ksh를 사용하고 있습니다. 나는 name = ENV1 만 바꾸고 싶다. 하나씩 선언하는 대신 이름 [0], 이름 [1]을 나열해야하기 때문이다. – Vinoth

답변

0

name=ENV1는 실제 문자열 ENV1 대신 변수 name에 변수 ENV1의 내용을 할당하지만,하지 않습니다.

  • name에 배열 ENV1를 복사하려면, 당신은이를 사용할 수 있습니다

    name=$ENV1

    name=${ENV1[0]}과 동일합니다. 인덱스가 지정되지 않았기 때문에 변수 의 첫 번째 요소가 복사됩니다. 그래서 여기에서 은 인덱스 0 만 고려됩니다.

  • nameENV1의 모든 값을 지정하려면, 당신은이를 사용해야합니다

    set -A name "${ENV1[@]}"

    이것은 ENV1의 모든 요소에 배열 변수 name를 설정합니다.

+0

감사합니다 amartine, if 및 else 부분에서 'echo "$ {name [1]}"'에 대한 빈 줄을 가져 왔습니다. 제발 조언. – Vinoth

+0

'name-ENV1' 대신'set -A name "$ {ENV1 [@]}"'을 코드에 사용 했습니까? 그렇다면 업데이트 된 코드를 알려주십시오. – amartine

+0

안녕하세요, amartine, 그 작동하지만 디버그 모드 (sh -x name.sh)에서 스크립트를 실행할 때 다음 오류를 표시하고 중단되었습니다. ** 오류 ** : name.sh : 줄 55 : 설정 : -A : 잘못된 옵션 설정 : 사용 : 설정 [--abefhkmnptuvxBCHP] [-o 옵션] [arg ...] – Vinoth

관련 문제