0

我有一个变量 $x 有一个示例值,如 isd21anms.com、isd31anms.com 等。现在我想遍历 for 循环以将 no 1 从 1 更改为 1、2、3 4。请看下面的代码

for i in 1 2 3 4
do
     change $i such that I get values isd21anms.com, isd22anms.com, isd23anms.com, isd24anms.com
done

请记住,$x 可以具有类似 isd21anms.com、isd31anms.com、isd41anms.com 的值。所以我必须将它保存在变量中并在其上应用 for 循环,而不是使用常量值。

4

3 回答 3

1

我会为此使用大括号扩展

for i in isd{1..4}{1..4}anms.com; do
  echo $i
done

输出:

    isd11anms.com
    isd12anms.com
    isd13anms.com
    isd14anms.com
    isd21anms.com
    isd22anms.com
    isd23anms.com
    isd24anms.com
    isd31anms.com
    isd32anms.com
    isd33anms.com
    isd34anms.com
    isd41anms.com
    isd42anms.com
    isd43anms.com
    isd44anms.com

大括号展开

于 2013-01-09T14:13:32.220 回答
0

如果我正确理解了您的问题:

for x in isd21anms.com isd31anms.com isd41anms.com
do
        for i in {1..4}
        do
                y=${x/1/$i}
                echo $y
        done
done

在运行这个,得到:

isd21anms.com
isd22anms.com
isd23anms.com
isd24anms.com
isd31anms.com
isd32anms.com
............
于 2013-01-09T06:45:01.247 回答
0
for i in 1 2 3 4
do
y=`echo $temp | sed "s/\(.*\).\(anms.com\)/\1"${i}"\2/g"`
echo "y is $y"
done

测试如下:

> ./temp.sh
y is isd21anms.com
y is isd22anms.com
y is isd23anms.com
y is isd24anms.com
> setenv temp "isd31anms.com"
> ./temp.sh
y is isd31anms.com
y is isd32anms.com
y is isd33anms.com
y is isd34anms.com
于 2013-01-09T07:16:43.460 回答