3

我有一个旧版本的 bash:3.2.25 我正在尝试编写一个 for 循环:

#!/bin/bash
filename="K"

for k in {2..20..2}
do
  filename=$filename$k
done

这应该给我:

K2
K4
.
.
K20

但这就是它给我的:

K{2..20..2}
K{2..20..2}
.
.
K{2..20..2}

是因为它是旧版本的 bash 吗?我怎样才能让它工作?列出所有值不是解决方案,因为我将不得不使用 {5..201}。

4

4 回答 4

5

我相信这是在 bash 4 中添加的。

你可以做:

for (( k=5; k<=201; k+=2 )); do
    filename=$filename$k
done
于 2013-07-24T18:20:58.667 回答
3

您可以将 for 循环更改为以下语法:

#!/bin/bash
filename="K"
for ((k=2;k<=20;k+=2))
do
    echo "$filename$k"
done
于 2013-07-24T18:20:14.397 回答
3

您可以改用该seq程序:

for k in $(seq 2 2 20); do
  filename=$filename$k
done
于 2013-07-24T18:20:41.417 回答
2
#!/bin/bash
filename="K"

for k in $(seq 2 2 20)
do
  filename2=$filename$k
  echo $filename2
done

测试:

K2
K4
K6
K8
K10
K12
K14
K16
K18
K20
于 2013-07-24T18:27:13.797 回答