
쉘 스크립트에는 $a, $b, $c 등으로 주문한 변수 목록이 있습니다. 모든 변수를 나열하지 않고도 이러한 변수를 인쇄하고 싶습니다. 내 현재 코드는 다음과 같습니다.
a=1
b=2
c=3
d=4
e=5
f=6
g=7
for x in $a$b$c$d$e$f$g
do
echo "$x"
done
$a$b$c$d$e$f$g를 $a부터 $g까지 참조하는 것으로 단축할 수 있나요?
답변1
"악"을 사용하여 eval
:
eval echo \"$(printf '$%s' {a..g})\"
변수에 공백 문자가 포함되어야 하는 경우 올바른 출력을 위해 필요한 이스케이프된 따옴표를 사용했습니다.
또는 수정된 for 루프를 사용하십시오.첫 번째 답변:
for x in {a..g}; do printf "${!x}"; done
또는 스크립트에서 배열을 사용하십시오. 이는 다른 구문이지만 모든 값이 동시에 필요한 경우 처리하기가 더 쉽습니다. 다음은 작은 예입니다.
array=(1 2 3 4 x 6)
array+=(7) # add one more
array[4]=5 # modify element at index 4
printf '%s' "${array[@]}"
마지막 두 printf
문은 개행 문자로 끝나지 않습니다.