i1zhuxian 发表于 2015-10-8 16:09:51

while read line 怎么用啊

本帖最后由 i1zhuxian 于 2015-10-8 16:14 编辑

要写个脚本取出文件里的ip和hostname并写到/etc/hosts中
文件如下:
1,192.168.0.10,slave1
2,192.168.0.11,slave2
.
.
.
100,192.168.0.100,slave100

有找到下面的写法,但是看不懂……{:6_456:}
蛮烦哪位大神帮忙解释下,谢谢!!

catslave | while read line
do
line=${line//,/ }       #就是这4行看不明白{:6_402:}
arr=($line)
line1=${arr}
line2=${arr}

echo "$line1$line2" >>/etc/hosts

done

relvrui 发表于 2015-10-8 16:21:54

这四行我也看不懂,你参考下 这个 http://blog.itpub.net/22664653/viewspace-1175858/

i1zhuxian 发表于 2015-10-8 16:41:09

本帖最后由 i1zhuxian 于 2015-10-8 17:02 编辑

relvrui 发表于 2015-10-8 16:21
这四行我也看不懂,你参考下 这个 http://blog.itpub.net/22664653/viewspace-1175858/
谢谢哈 ,看了下 还是不明白啊 只能根据上下文猜测一下额
line=${line//,/ }       #以 “," 分割? ","被替换?完全不明白啊?!!!{:6_443:}
arr=($line)               #数组?
line1=${arr}         #将第2段赋值给line1(从0开始?)
line2=${arr}      #将第3段赋值给line1

i1zhuxian 发表于 2015-10-8 16:53:11

i1zhuxian 发表于 2015-10-8 16:41
谢谢哈 ,看了下 还是不明白啊 只能根据上下文猜测一下额
line=${line//,/ }       #以 “," 分割
arr=($ ...

line=${line//,/ }    如果是以空格为分割呢?要怎么去写?


relvrui 发表于 2015-10-8 17:06:54

我又看了一下,脚本在sh -x 查看执行情况,以下是我的理解:
line=${line//,/ }       #获取文本中的一行后,用空格替换文档中的逗号;我一般用sed去写, sed -e 's/,/ /g' filename
arr=($line)            #相当于是没有标点符号的一串字符,中间有空格的
line1=${arr}      #把一行看到数组,第二个元素
line2=${arr}       #把一行看到数组,第三个元素
页: [1]
查看完整版本: while read line 怎么用啊