Bash 스크립트 - 중괄호 안의 변수

Bash 스크립트 - 중괄호 안의 변수

다음 bash 스크립트

#!/bin/bash

startNumber=$(( 1 ))
endNumber=$(( $startNumber + 3 ))

#for number in {$startNumber..$endNumber}
for number in {1..4}
do
        echo $number
done

exit 0

필요한 출력을 제공합니다

1
2
3
4

그러나 주석 처리되지 않은 for 루프와 주석 처리된 for 루프를 전환하면 출력은 다음과 같습니다.

{1..4}

내가 뭘 잘못했나요?

답변1

변수는 내부적으로 확장되지 않습니다.버팀대 확장. 다음을 수행할 수 있습니다.

for ((number=startNumber; number<=endNumber; number++)); do
    echo "$number"
done

또한 사용할 이유가 없습니다.산술 확장왜냐하면 startNumber당신은 단순히 다음을 수행해야 하기 때문입니다:
startNumber=1.

$또한 변수를 확장하기 위해 산술 확장에 사용할 필요가 없으므로 endNumber다음과 같을 수 있습니다.
endNumber=$((startNumber+3))

답변2

다른 곳에서 설명했듯이 확장 프로그램은 작동하지 않습니다. 일련의 숫자를 얻는 또 다른 방법:

for number in $(seq $startNumber $endNumber)
do
  echo $number
done

관련 정보