2013-01-09 77 views
0

我有一个变量$ x有一个像isd21anms.com,isd31anms.com等样本值现在我想循环遍历循环改变1从1到1 ,2,3 4.请看看下面的代码改变一个字母的变量,而迭代通过for循环

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值。所以我必须将它保存在变量中,并对其应用循环而不是使用常量值。

回答

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 
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 
............ 
+0

$ x可以有像isd21anms.com,isd31anms.com,isd41anms.com.so值您的解决方案会在这种情况下怎么把UR失败只考虑一个case isd21 ....而不是isd31,isd41等等。 – user1745857

+0

@ user1745857:更新了 – Guru

+0

看到,我有一个变量在这里使用它可能有任何价值出isd11anms.com isd21anms.com isd31anms.com isd41anms.com当我运行脚本。所以我不知道当我跑步时需要多少价值。我将不得不使用这个变量并迭代。 – user1745857

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 

brace expansion