2017-09-11 5 views
1

배열에 요소를 추가 할 때 임시 변수의 차이점을 설명 할 수있는 사람이 있습니까?임시 변수를 사용하면 배열에 다른 결과가 나타납니다.

#!/bin/bash 

declare -a finaldirs1 
declare -a finaldirs2 

declare -a files=("Planes" "Trains" "Automobiles") 

echo "A)..................................." 
for el1 in "${files[@]}"; do 
    tmpe=$(printf "1:%s." "${el1}") 
    finaldirs1+=($tmpe) 
done 
for elA in "${finaldirs1[@]}"; do 
    echo "First: " $elA 
done 

echo "B)..................................." 
for el2 in "${files[@]}"; do 
    finaldirs2+=$(printf "2:%s." "${el2}") 
done 
for elB in "${finaldirs2[@]}"; do 
    echo "Second: " $elB 
done 
echo "DONE................................." 

요약하면 두 번째 버전은 어떻게 든 모든 요소를 ​​결합합니다. 출력은 :

A)................................... 
First: 1:Planes. 
First: 1:Trains. 
First: 1:Automobiles. 
B)................................... 
Second: 2:Planes.2:Trains.2:Automobiles. 
DONE................................. 

답변

2

이어야한다.

#!/bin/bash 

declare -a finaldirs1 
declare -a finaldirs2 

declare -a files=("Planes" "Trains" "Automobiles") 

echo "A)..................................." 
for el1 in "${files[@]}"; do 
    tmpe=$(printf "1:%s." "${el1}") 
    finaldirs1+=($tmpe) 
done 
for elA in "${finaldirs1[@]}"; do 
    echo "First: " $elA 
done 

echo "B)..................................." 
for el2 in "${files[@]}"; do 
    finaldirs2+=($(printf "2:%s." "${el2}")) 
done 
for elB in "${finaldirs2[@]}"; do 
    echo "Second: " $elB 
done 
echo "DONE................................." 

당신은 arr+='element' 그냥 문자열 arr에 추가 할 것이라고하면서, arr+=('element')처럼 이루어집니다 배열에 추가를 참조하십시오.

2
finaldirs2+=$(printf "2:%s." "${el2}") 

당신은 괄호의 몇 가지를 놓친

finaldirs2+=($(printf "2:%s." "${el2}")) 
관련 문제