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 循环时,输出为

{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

相关内容