文档章节

shell编程总结9(for相关)

心中的理想乡
 心中的理想乡
发布于 2017/02/25 21:30
字数 1080
阅读 3
收藏 0

1、for命令
    基本格式:
        for var in list
        do
            commands
        done
    举例:
        #!/bin/bash
        for test in ji sd cv we gffd sdfa
        do
            echo The next state is $test
        done

    说明:上面的例子中,test是一个变量,在for结束之后,test一样可以在外面访问,他的值是最后一个列表的值

2、for循环中解决单引号带来的问题:
    问题举例:
        #!/bin/bash
        for test in I don't know if this'll work
        do
             echo "word:$test"
        done
    输出:
        word:I
        word:dont know if thisll
        word:work
    解决办法:
        (1)使用转义字符(反斜线)来将单引号转义
        (2)使用双引号来定义用到的单引号的值
    解决举例:I don\'t know if "this'll" work(第一处使用的是(1)办法,第二个使用的是(2)办法)

3、循环列表的时候想要多个空格变成一个单词:
    问题举例:
        for test in New York Nevada
    解决办法:使用双引号
        for test in "New York" Nevada
4、从变量中读取列表
    举例:
        #!/bin/bash
        list="asdf fwe cvsd weew dgsd"
        list=$list" wer"#向列表尾部添加新元素的常用方法
        for state in $list
        do
            echo "Have you ever visited $state"
        done
5、从命令读取值
    举例:
        #!/bin/bash
        file="states"#这个地方时将文件名赋给了一个变量file
        for state in `cat $file`
        do
            echo "Visit beautiful $state"
        done
    问题:这种方式,在文件中如果每一行都有一个州的名字的话,那么的话会列出来;如果每一行的州名中间有空格的话,那么这个for循环一样会识别这个空格,将单词拆分开来

6、更改字段分隔符
    IFS:内部字段分隔符,是一个特殊的环境变量,默认情况下,bash shell会将下列的字符当做字段的分隔符:
        空格
        制表符
        换行符
    临时改变字段分隔符举例:
        #!/bin/bash
        IFS=$'\n'#这个地方将IFS这个内部分割符改成了换行
        file="states"
        for state in `cat $file`
        do
            echo "Visit beautiful $state"
        done
    另外:
        IFS=:#这个将分隔符改成了冒号
        IFS=$'\n:;'"#这个分隔符改成了换行符、冒号、分号和双引号

7、使用通配符读取目录
    举例:
        #!/bin/bash
        for file in /home/rich/test/*
        do
            if [ -d "$file" ]
            then
                echo "$file is a directory"
            elif [ -f "$file" ]
            then
                echo "$file is a file"
            else
                echo "$file doesn't exist"
            fi
        done
    说明:这里将file这个变量双引起来,主要是问了放置文件或是目录的名字里面有空格,如果不这样并且有空格的名字,那么shell就会报错

8、C语言风格的for
    基本示例:for(( a= 1; a < 10; a++ ))
    说明:
        (1)给变量赋值可以有空格
        (2)条件中的变量不以美元符开头
        (3)迭代过程中的算式未用expr米宁格式
    举例:
        #!/bin/bash
        for (( a=1, b=10; a<= 10; a++,b-- ))
        do
            echo "$a - $b"
        done
    另外:经测试这种方式的for必须是要在bash中使用,ubuntu启动使用的是dash,所以要切换一下,具体切换方式可以buidu一下
9、while命令
    基本格式:
        while test command
        do
            other commands
        done
    说明:循环执行commands,直到test命令,或是其他命令的退出码非零之后结束循环
    举例:
        #!/bin/bash
        var1=10
        while [ $var1 -gt 0 ]
        do
            echo $var1
            var=$[ $var1-1 ]
        done
10、until命令:与while循环相反,命令要求你指定一个通常输出非零退出状态码的测试命令,只有测试命令的退出状态码非零,bash shell才会指定循环中列出的那些命令,一旦测试命令返回了退出状态码0,循环就结束了。

11、break和continue,在shell中一样有效果,和其他语言一样,不一样的是可以使用一个语法:
    break n(continue n)
这个表示要跳出(继续)哪一层循环,默认n的值是1,表示当前所在的循环,设置成2的话,表示要跳出(继续)上一层的循环

12、循环结束之后的输出:
    (1)输出重定向到一个文件:
        for(( a=1; a<10; a++ ))
        do
            echo "The number is $a"
        done > test12.txt#输出重定向到了test12.txt文件里面
    (2)管道
        for state in adsf swe gfdet efg
        do 
            echo "$state is the next place to go"
        done | sort#输出直接排序
 

© 著作权归作者所有

共有 人打赏支持
心中的理想乡
粉丝 18
博文 75
码字总数 101203
作品 0
深圳
程序员
私信 提问
linux运维实战练习-2015年9月13日-9月15日课程作业

一、作业(练习)内容: 1、描述shell程序的运行原理(可附带必要的图形说明); 2、总结shell编程中所涉及到的所有知识点(如:变量、语法、命令状态等等等,要带图的哟); 3、总结课程所讲...

xjxiaolei
2015/09/23
0
0
【成都】哆可梦游戏公司招聘DBA 1 名, 高级运维1名,初级运维1名

Mysql DBA 数据库工程师 岗位说明: 1.参与公司业务需求,提供建议,负责数据库设计,为开发团队提供数据库支持. 2.负责MySQL数据库架构(包括容灾)设计与部署. 3.数据库备份还原策略的设计、实施...

nagios.fre
2012/05/10
1K
10
python变量数据类型总结

今日在对比shell编程和python编程时,对于关键字、数据类型、流程控制、异常处理这些有了新的看法,同时对“面向过程编程-函数式编程-面向对象编程”的编程思想也有了一些更深的看法,所以准...

yumushui991
2017/03/09
0
0
2017-12-5Linux基础知识(15)shell编程

shell编程是在Linux的基础知识中所必须掌握的语言,它也是一个命令的集合,如果学会的话,我们将会事半功倍,将重复的操作通过shell编程脚本来实现,减轻了一定的负担,那么现在就来讲一下s...

刘祥宇
2017/12/07
0
0
福利 | 2018 年,程序员全新的技术之路

点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! 年年岁岁花相似,岁岁年年人不同。新年伊始,看着朋友圈各种年终总结、新年新的 KPI,你是否会有些不同的感觉?作为互联网中...

csdnnews
01/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MyBaties分页插件PageHelper的简单使用

抛出问题: 如果想要将现有的select语句改为支持分页功能的查询语句该怎么做呢? 最简单的一种做法就是将所有的select语句都加上limit来实现分页,这种做法有什么问题呢? 有没有一种简便方法...

嘴角轻扬30
27分钟前
2
0
创业公司如何快速构建高效的监控系统?

12 月 7 日,在 2018 ArchSummit 全球架构师峰会·运维与监控专场,七牛云资深运维开发工程师贺强带来了主题为《如何快速构建高效的监控系统》的内容分享。 本文是对演讲内容的实录整理。 大...

七牛云
28分钟前
0
0
Docker与自动化测试及其测试实践

Docker 与自动化测试 对于重复枯燥的手动测试任务,可以考虑将其进行自动化改造。自动化的成本在于自动化程序的编写和维护,而收益在于节省了手动执行用例的时间。简而言之,如果收益大于成本...

微笑向暖wx
28分钟前
1
0
Spring Cloud 分布式链路跟踪 Sleuth + Zipkin + Elasticsearch

随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构的兴起,看似一个简单的应用,后台可能很多服务在支撑;一个请求可能需要多个服务的调用;当请求迟缓或不可用时,无法得知...

编程SHA
31分钟前
1
0
Swift-清除缓存

func removeCache (){ // 取出cache文件夹路径.如果清除其他位子的可以将cachesDirectory换成对应的文件夹 let cachePath = NSSearchPathForDirectoriesInDomains(FileMan...

west_zll
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部