bash循环:用于较旧的bash版本的循环

时间:2013-07-24 18:17:04

标签: bash

我有旧版本的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 个答案:

答案 0 :(得分:5)

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

你可以这样做:

for (( k=5; k<=201; k+=2 )); do
    filename=$filename$k
done

答案 1 :(得分:3)

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

#!/bin/bash
filename="K"
for ((k=2;k<=20;k+=2))
do
    echo "$filename$k"
done

答案 2 :(得分:3)

您可以改为使用seq程序:

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

答案 3 :(得分: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