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

Nov 13 2020

다음 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 루프를 전환하면 출력은 다음과 같습니다.

{1..4}

내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

8 jesse_b Nov 13 2020 at 13:22

변수는 중괄호 확장 내부에서 확장되지 않습니다 . 다음과 같이 할 수 있습니다.

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

또한, 사용하는 이유가 없다 산술 확장을 위해 startNumber당신은 단순히해야 할이 :
startNumber=1.

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

8 bxm Nov 13 2020 at 13:32

다른 곳에서 설명했듯이 확장은 작동하지 않습니다. 숫자 시퀀스를 얻는 다른 방법 :

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