shell scripts 求指导

5毛 发布于 2013/04/21 17:04
阅读 217
收藏 0

想大家请教一个问题,请不啬赐教,先谢谢了 :)

shell脚本里面假设两个变量:

SERVER_NAME=host1,host2,host3
SERVER_IP=1.2.3.4,11.22.33.44,111.222.333.444

然后根据host1-1.2.3.4 做一次脚本相应的执行,host2-11.22.33.44重新做一次执行,host3....

不仅仅是之前说的print出来...

想要实现输出效果的效果是:

host1    1.2.3.4

host2    11.22.33.44

host3    111.222.333.444

最好能够给出我一个具体的实现语句便是极好的.



加载中
0
5毛
5毛

问题解决了:FYI

[root@station9 tmp]# cat array.sh 
#!/bin/bash
SERVER_NAME=
SERVER_ETH1_IP=
while getopts "c:d:" OPTION
do
     case $OPTION in
c)
SERVER_NAME="$OPTARG"
;;
d)
SERVER_ETH1_IP="$OPTARG"
;;
    esac
done
SERVER_NAME_SP=(`echo "${SERVER_NAME}" |sed 's/,/ /g'`)
SERVER_ETH1_IP_SP=(`echo "${SERVER_ETH1_IP}" |sed 's/,/ /g'`)
for ((i=0;i<${#SERVER_NAME_SP[@]};i++))
do
echo "this is $i time run this loop."
echo "${SERVER_NAME_SP[i]} ${SERVER_ETH1_IP_SP[i]}"
done


[root@station9 tmp]# sh array.sh -c host1,host2,host3 -d 1.2.3.4,12.34.56.78,11.22.33.44
this is 0 time run this loop.
host1 1.2.3.4
this is 1 time run this loop.
host2 12.34.56.78
this is 2 time run this loop.
host3 11.22.33.44

1
Yu_Yang
Yu_Yang

我吐,凉凉祸害到这里来了,你这个可以用cut把两个变量切分:

echo $SERVER_NAME | cut -d ',' -f 1
如果数据不严格,比如有空格之类的,那还是awk吧。

Yu_Yang
Yu_Yang
回复 @5毛 : 那就awk,如果方便的话,还是python,而且python被很多发行版默认带了,一个split全部搞定。相对于shell,awk而言,python让我觉得更舒服,更一致,没有各种trick
5毛
5毛
-f 1, 这个1,是个不确定的数,host和IP可能有3个 也可能有5个 也可能仅仅是一个
1
dreamers
dreamers
直接array很方便呀。。
0
0-1
0-1

引用来自“yangzhiyong”的答案

直接array很方便呀。。
存储时一步到位,后面就不用分割查找了。
0
Castle.liu
Castle.liu
awk -F [\=] '$1~/^ SERVER_NAME/{split($2,a,","} $1~/^SERVER_IP/{split($2,b,","} END{for (i=0;i++;i<=length(a)) print a[i],b[i]}'   ---没测试,思路应该可以
5毛
5毛
awk弱智....我会努力看懂并学会的,谢谢你
返回顶部
顶部