免费注册 查看新帖 |

Chinaunix

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

请问如何能让这样的字符串累加? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-28 15:12 |只看该作者 |倒序浏览
有组机器名类似于
a01.**.**.**
a02.**.**.**
a03.**.**.**
.........
.........
我想把机器名赋值到一个变量里比如t=a01.**.**.**
请问如何才能让这个变量值在循环中自动累加。

让t=a01.**.**.**
     a02.**.**.**
     a03.**.**.**
      ........
      ........

论坛徽章:
0
2 [报告]
发表于 2008-07-28 15:31 |只看该作者
#!/bin/bash
t=a01.**.**.**
for ((i=2;i<=100;i++))
do
        if [ $i -lt 10 ];then
                x=a0"$i".**.**.**
        else
                x=a"$i".**.**.**
        fi
        t="$t\n$x"
done
echo -e $t | more

论坛徽章:
0
3 [报告]
发表于 2008-07-28 16:28 |只看该作者
a01.**.**.**
这类主机名是当时输入还是存放在文件里?
我这里假设主机名都是存放在文件里的

  1. #! /bin/bash
  2. for i in `cat $1`
  3. do
  4.     t="$t \n $i"
  5. done
  6. echo -e "$t"|grep -v ^[[:space:]]$
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-07-28 16:30 |只看该作者
收到。。谢谢。。

刚才试了一下
t=01
((++t))
shell竟然把前边的0自动去掉了 。。不知道有什么方法可以保留这个0

或者类似于a01+1自动变成a02的方法

论坛徽章:
0
5 [报告]
发表于 2008-07-28 16:33 |只看该作者

回复 #4 jlu204 的帖子

没有什么好的方法,2L我已经写了,就是判断

论坛徽章:
0
6 [报告]
发表于 2008-07-28 16:34 |只看该作者
原帖由 addbe 于 2008-7-28 16:28 发表
a01.**.**.**
这类主机名是当时输入还是存放在文件里?
我这里假设主机名都是存放在文件里的

#! /bin/bash
for i in `cat $1`
do
    t="$t \n $i"
done
echo -e "$t"|grep -v ^[[:space:]]$

主机名通过参数传递。

并不是要把所有主机名都存放在一个变量里。而是要在循环中对主机逐个处理。

[ 本帖最后由 jlu204 于 2008-7-28 16:37 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-07-28 16:38 |只看该作者
原帖由 eeeef 于 2008-7-28 16:33 发表
没有什么好的方法,2L我已经写了,就是判断



恩。。谢谢2位。。采用了 2楼的方法。

论坛徽章:
0
8 [报告]
发表于 2008-07-28 16:39 |只看该作者
  1. for i in `seq -f%02g 1 100`;do t="a$i.*.**.**";dosometh $t;done
复制代码

论坛徽章:
0
9 [报告]
发表于 2008-07-28 16:46 |只看该作者
原帖由 merlin852 于 2008-7-28 16:39 发表
for i in `seq -f%02g 1 100`;do t="a$i.*.**.**";dosometh $t;done


哦。。忘了说了 。主机明中的a不是固定的。。只是举个例子
主机名的格式是
*数字.***.***

论坛徽章:
0
10 [报告]
发表于 2008-07-28 16:47 |只看该作者
原帖由 jlu204 于 2008-7-28 16:34 发表

主机名通过参数传递。

并不是要把所有主机名都存放在一个变量里。而是要在循环中对主机逐个处理。

改进下

  1. #! /bin/bash
  2. for i in $*
  3. do
  4.     t="$t \n $i"
  5. done
  6. echo -e "$t"|grep -v ^[[:space:]]$
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP