Bash
為什麼這個 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
誰能解釋為什麼會發生這種情況以及我需要做些什麼來糾正?或者有人有更好的方法嗎?
只是一組 - 或多或少安全 - 並且可能是眾所周知的方法:
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