2017-03-28 1 views
1

의 예를 들어 가정 해 봅시다 나는 다음과 같은 코드를 가지고 : 나는 키 값을 인쇄하는 방법bash에서 키 값을 출력하는 방법은 무엇입니까?

arr=([j1]=3 [j2]=2 [j3]=1) 

을 (J1, J2, J3)?

0 

가 어떻게 인덱스 번호를 키 값을 모두 출력하지 않습니다

for key in ${!arr[@]}; do 
    echo ${key} 
done 

그것은 다음과 같은 인쇄 :

나는이 시도?

EDIT1 : 나는 이론적으로 내 키 값을 인쇄한다 루프 두 가지가

#!/bin/bash 

#Suggestion 2 
declare -A arr 

arr=([j1]=3 [j2]=2 [j3]=1) 


#My original code 
for key in ${!arr[@]}; do 
    echo ${key} 
done 


#Suggestion 1 
for i in "${!arr[@]}" 
do 
    echo "key: $i" 
    echo "value: ${arr[$i]}" 
done 

,하지만 난 여전히 이니 내가 제안의 일부를 시도하고 다음과 같이 내 전체 코드는 지금

다음을 얻는 것 :

0 

내 코드가 잘못되었습니다.

+0

EDIT1에 대한 여러분의 코드는이 코드는 같은 일 광산이 한 반환 나를 – xhienne

답변

2

귀하의 구문은 정상입니다. 당신은 한 줄 잊었 :

그렇지
declare -A arr 

, arr는 연관 배열하지만 인덱스 배열로 간주되지 않습니다 및 각 인덱스 (즉, 배열의 초기화가 arr=([0]=3 [0]=2 [0]=1)로 평가)를 산술 식으로 볼 수 있습니다.

$ arr=([j1]=3 [j2]=2 [j3]=1) 
$ for key in "${!arr[@]}"; do echo "${key}"; done 
0 
$ unset arr 

$ declare -A arr 
$ arr=([j1]=3 [j2]=2 [j3]=1) 
$ for key in "${!arr[@]}"; do echo "${key}"; done 
j2 
j3 
j1 

+0

hmmm 여전히 단 하나의 0이 출력됩니다. – MoreFoam

+0

위 코드를 편집에 추가하여 볼 수 있습니다. – MoreFoam

+0

코드가 표시된 그대로 정확하게 입력 했으므로 여전히 0을 얻고 있습니다. 내가 잘못하고있는 것에 대해서는 단서가 없습니다. – MoreFoam

0
for i in "${!array[@]}" 
do 
    echo "key : $i" 
    echo "value: ${array[$i]}" 
done 
+0

작동 ($을 선도하는 것은 물론 쉘 프롬프트이다). 단일 값 : 0 – MoreFoam

관련 문제