2014-12-29 3 views
4

temp의 값을 얻으려면 쉘 코드를 "good 1"과 "good 2"로 사용하려고했지만 시도 할 수 없었습니다.하나의 변수 값을 쉘 스크립트의 다른 변수에 할당하는 방법

hello_1="good 1" 
hello_2="good 2" 
for i in 1 2 
do 
temp="hello_$i" 
echo $temp 
done 

나는 temp 변수에 hello_1hello_2 변수 값을 가져 오도록합니다. 위 스크립트를 시도했지만 temphello_1hello_2의 값을 가져올 수 없습니다. 도와주세요.

+0

$처럼 CONCAT을 시도 할 수 있음 {hello_ $ {i}}. 노력하고 있는지 여부를 알려주십시오. 또한 가치를 반향 시키십시오. – Jigar

답변

4

bash 4 이상을 사용하는 경우 indirect references을 참조하십시오. 그러나 귀하의 질문에 대답 할 수는

good 1 
good 2 

eval는 일반적으로 쉘 프로그래밍에 evil 간주 출력

hello_1="good 1" 
hello_2="good 2" 
for i in 1 2 
do 
    eval temp="\$hello_$i" 
    echo $temp 
done 

할 수 있습니다. 그것을 사용하는 습관에 빠지지 마십시오.

핵심 기술은 eval이 줄의 두 번째 평가를 제공한다는 것입니다. 첫 패스가 $i1 표시 방법 및 eval는 광고의 처리를 실행할 때의 주요 \\ 숯불 그래서 \$hello_1에서 제거되었는지

eval temp="$hello_1" 

주 모양은의 값을 취 즉

temp="good 1" 

IHTH, $hello_1 변수 temp에 할당

관련 문제