반응형
배열을 반복하여 인덱스와 값을 모두 인쇄
나는 이런 식으로하고 싶다 :
foo=( )
foo[0]="bar"
foo[35]="baz"
for((i=0;i<${#foo[@]};i++))
do
echo "$i: ${foo[$i]}"
done
# Output:
# 0: bar
# 1:
그런 다음 for를 사용하여 반복하려고했습니다.
foo=( )
foo[0]="bar"
foo[35]="baz"
for i in ${foo[@]}
do
echo "?: $i"
done
# Output:
# ?: bar
# ?: naz
그러나 여기서는 색인 값을 모릅니다.
나는 당신이 뭔가를 할 수 있다는 것을 알고 있습니다
foo=( )
foo[0]="bar"
foo[35]="baz"
declare -p foo
# Output:
# declare -a foo='([0]="bar" [35]="baz")'
그러나 다른 방법으로는 할 수 없습니까?
"${!foo[@]}"
( reference )가 있는 배열 키를 찾을 수 있습니다.
for i in "${!foo[@]}"; do
printf "%s\t%s\n" "$i" "${foo[$i]}"
done
즉 $i
, 요소 자체를 통해 액세스해야하는 동안 인덱스가 들어갑니다.${foo[$i]}
항상 반복 매개 변수를 사용할 수 있습니다.
ITER=0
for I in ${FOO[@]}
do
echo ${I} ${ITER}
ITER=$(expr $ITER + 1)
done
INDEX=0
for i in $list; do
echo ${INDEX}_$i
let INDEX=${INDEX}+1
done
users=("kamal" "jamal" "rahim" "karim" "sadia")
index=()
t=-1
for i in ${users[@]}; do
t=$(( t + 1 ))
if [ $t -eq 0 ]; then
for j in ${!users[@]}; do
index[$j]=$j
done
fi
echo "${index[$t]} is $i"
done
bash 4에서는 연관 배열을 사용할 수 있습니다.
declare -A foo
foo[0]="bar"
foo[35]="baz"
for key in "${!foo[@]}"
do
echo "key: $key, value: ${foo[$key]}"
done
# output
# $ key: 0, value bar.
# $ key: 35, value baz.
bash 3에서 이것은 작동합니다 (zsh에서도 작동합니다).
map=( )
map+=("0:bar")
map+=("35:baz")
for keyvalue in "${map[@]}" ; do
key=${keyvalue%%:*}
value=${keyvalue#*:}
echo "key: $key, value $value."
done
참고 URL : https://stackoverflow.com/questions/6723426/looping-over-arrays-printing-both-index-and-value
반응형
'development' 카테고리의 다른 글
CUDA 그리드 치수, 블록 치수 및 스레드 구성 이해 (간단한 설명) (0) | 2020.06.07 |
---|---|
Visual Studio 2010에서 Ctrl + 스크롤 확대 / 축소를 비활성화하는 방법은 무엇입니까? (0) | 2020.06.07 |
m2e는 maven-dependency-plugin ( "copy-dependencies", "unpack"목표)을 지원하지 않습니다 (0) | 2020.06.07 |
SQL Server의 LIMIT 10..20 (0) | 2020.06.07 |
클래스가 수퍼 클래스의 필수 멤버를 구현하지 않습니다 (0) | 2020.06.07 |