免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2096 | 回复: 11
打印 上一主题 下一主题

求教shell脚本~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-23 23:30 |只看该作者 |倒序浏览
有10个IP地址或者更多   1.2.3.1---1.2.3.10----,如何将IP用脚本赋予到下面列表中:
++ t1
menu = t1
title = 1.2.3.1
host = 1.2.3.1

++ t2
menu = t2
title = 1.2.3.2
host = 1.2.3.2
......
......
...... 以此类推,中间省略掉了
......
......
++ t10
menu = t10
title = 1.2.3.10
host = 1.2.3.10
.......
.......
.......
.......
坐等答案,求高手指教~!

论坛徽章:
0
2 [报告]
发表于 2012-02-23 23:36 |只看该作者
目前只做到效果


for i in {1..10}
do
    echo -e "++ t${i}" >> config
    echo -e "menu = t${i}" >> config
    echo -e "title = " >> config
    echo -e "host = " >> config
    echo ""
done

ip 不知道怎么弄进去~!!求解答

论坛徽章:
0
3 [报告]
发表于 2012-02-24 00:12 |只看该作者
没人回答,无奈之下将ip地址编号,更改脚本如下:

ip.txt内容:
        1 1.2.3.1
        2 1.2.3.2
        3 1.2.3.3
        4 1.2.3.4
        5 1.2.3.5
        6 1.2.3.6

shell脚本:

for i in {1..6}
do
    echo -e "++ t${i}" >> config
    echo -e "menu = t${i}" >> config
    echo -e "title = ${i}" >> config
    echo -e "host = ${i}" >> config
    echo ""
        for j in `cat ip.txt|awk '/^'${i}'/ {print $2}'`
        do
                sed -i 's#= '${i}'# = '${j}'#' ./config
        done
done

虽然问题得以解决,但还想知道有没有高手弄出更简单的方法!~ 继续期望下面牛掰的答案。

论坛徽章:
0
4 [报告]
发表于 2012-02-24 14:42 |只看该作者
#!/bin/sh


ip="1.2.3."

for i in {1..10}
do
    echo -e "++ t$i" >> config
    echo -e "menu = t$i" >> config
    echo -e "title = $ip$i" >> config
    echo -e "host = $ip$i" >> config
    echo ""
done

论坛徽章:
0
5 [报告]
发表于 2012-02-24 15:16 |只看该作者
[clb@localhost sh]$ cat iplist
1.2.3.4--2.2.3.4---1.2.345.3---122--
[clb@localhost sh]$ awk 'BEGIN {FS="-+";i=0;} {for(i=1;i<NF;i++){printf("++t%d\nmenu=t%d\ntitle=%s\nhost=%s\n", i,i,$i,$i);}}' iplist > output
[clb@localhost sh]$ cat output
++t1
menu=t1
title=1.2.3.4
host=1.2.3.4
++t2
menu=t2
title=2.2.3.4
host=2.2.3.4
++t3
menu=t3
title=1.2.345.3
host=1.2.345.3
++t4
menu=t4
title=122
host=122
[clb@localhost sh]$

论坛徽章:
0
6 [报告]
发表于 2012-02-24 15:17 |只看该作者
#sh test.sh > test.txt

x.JPG (7.25 KB, 下载次数: 16)

x.JPG

论坛徽章:
0
7 [报告]
发表于 2012-02-28 15:18 |只看该作者
本帖最后由 c251683535 于 2012-02-28 15:20 编辑

#! /bin/bash
IP="1.2.3."
for i in `seq 10`; do
echo  ++t$i
echo  "menu = t$i"
echo  "title = $IP$i"
echo  "host = $IP$i"
echo
done > ip.txt    #使用输出重定向...在当前目录下会出现个ip.txt文件  里面就是你要的内容
不想输出到文件的话 就把最后面的(>ip.txt)删除掉   这样就直接在屏幕上输出了

1.jpg (26.36 KB, 下载次数: 18)

1.jpg

2.jpg (17.74 KB, 下载次数: 17)

2.jpg

论坛徽章:
0
8 [报告]
发表于 2012-02-28 16:06 |只看该作者
回复 1# reborts_linux


    #/bin/bash

y="1.2.3."
i=1
while [ $i -le 10 ]
do
echo "++ t$i"
echo "menu = t$i"
echo "title = $y$i"
echo "host = $y$i"
echo ""
i=`expr $i + 1`
done

论坛徽章:
0
9 [报告]
发表于 2012-02-29 19:49 |只看该作者
回复 4# justfate


    非常感谢,ip要是没有这么有规律 就没法实现了

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
10 [报告]
发表于 2012-02-29 20:46 |只看该作者
  1. #! /bin/bash
  2. ip=1.2.3.

  3. for i in {1..10}
  4. do
  5.         IP=${ip}$i
  6.         echo ++t$i
  7.         echo menu = t$i
  8.         echo title = $IP
  9.         echo host = $IP
  10. done
  11. exit 0
复制代码
回复 1# reborts_linux


    至于如何向文件输入,我就不多说了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP