Bash에서 변수 이름 목록을 줄이는 방법은 무엇입니까?

Bash에서 변수 이름 목록을 줄이는 방법은 무엇입니까?

쉘 스크립트에는 $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문은 개행 문자로 끝나지 않습니다.

관련 정보