Bash

大括號擴展在腳本中不起作用

  • July 21, 2017
for i in {1..40}
do 
  echo $i
done

我有

{1..40}

我想要類似的東西

1
2
3
and so on

所以我可以i在命令的參數中使用變數。

bash 3.0+(以及 zsh 和 ksh93)中,{1..40}將擴展到 1-40(含)的數字。在像 dash 這樣的POSIX shell/bin/sh中(在例如 Ubuntu 中很典型),它不會起作用(我們稱這個問題為“bashism”)。

在具有 GNU 實用程序的系統上,您可以使用它seq來完成此操作:

for i in $(seq 1 40)
do
   echo $i
done

為了更便攜,您必須$iwhile循環中手動遞增:

i=1
while [ $i -le 40 ]
do
   echo $i
   i=$((i+1))
done

由於缺少外部命令,此攜帶式版本的速度也稍快一些。

引用自:https://unix.stackexchange.com/questions/192464