나는 이것이 매우 간단한 문제라고 생각하지만 그것을 작동시킬 수는 없습니다. 다음과 같은 전체 변수 목록이 있습니다.
SP60=OLA SP61=BYE SP62=TRT
특정 수의 변수에서 호출하는 루프를 만들고 싶기 때문에 간단한 해결책은 다음과 같습니다.
for i in {60..62}; do SP=$"SP$i"; echo $SP.txt; done
원래 예상했던 결과는 다음과 같습니다.
OLA.txt BYE.txt TRT.txt
하지만 난 이해해
SP60.txt...
이 작업을 수행하는 쉬운 방법이 있는지 궁금합니다.
답변1
다음 bash
/ ksh
스크립트를 고려하십시오.
SP60="OLA"
SP61="BYE"
SP62="TRT"
for (( i = 60; i <= 62; ++i )); do
typeset -n var="SP$i"
printf 'SP%d = %s.txt\n' "$i" "$var"
done
다음이 출력됩니다.
SP60 = OLA.txt
SP61 = BYE.txt
SP62 = TRT.txt
이름으로 변수를 참조합니다 ( in 또는 with var
inside and 를 사용하여 선언 ). 즉, 역참조될 때마다 참조하는 변수의 값으로 확장됩니다.declare -n
bash
typeset -n
bash
ksh
답변2
변수가 초기화된 후의 또 다른 옵션:
for i in $SP{60..62}; do echo $i.txt; done