이 for 루프가 내 변수를 무시하는 이유는 무엇입니까? [복사]

이 for 루프가 내 변수를 무시하는 이유는 무엇입니까? [복사]

사용자 입력에 따라 여러 명령을 N 번 실행하는 간단한 스크립트를 작성하려고 합니다. 그러나 for 루프에서 명령을 실행할 때 변수는 무시됩니다.

read -p "Please enter the number of times you wish to fail over: " num

...

  for run in {1..$num}
   do echo "STOP: "
   date
   systemctl stop $broker
   date
   sleep $st
   echo "START: "
   date
   systemctl start $broker
   date
   sleep $st
  done
fi
+ '[' y == n ']'
+ '[' y == N ']'
+ for run in '{1..$num}'
+ echo 'STOP: '
STOP:
+ date
Tue Dec  4 16:14:11 GMT 2018

왜 이런 일이 발생하는지, 그리고 이를 해결하려면 어떻게 해야 하는지 설명할 수 있나요? 아니면 더 좋은 방법이 있는 사람이 있나요?

답변1

다소 안전하고 아마도 잘 알려진 방법의 모음입니다.

a=5
eval "for i in {1..$a}; do echo \$i; done"
cat <<< "for i in {1..$a}; do echo \$i; done" | bash
echo "for i in {1..$a}; do echo \$i; done" | bash
for i in $(seq 1 $a); do echo $i; done

관련 정보