文档章节

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
博文 74
码字总数 91880
作品 0
深圳
程序员
linux运维实战练习-2015年9月13日-9月15日课程作业

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

xjxiaolei
2015/09/23
0
0
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
我的速查手册

本文只是记录一些自己经常翻查的手册(帮助文档),有些是解释语法的(例如make, python),有些是介绍工具使用的(例如git),写下来是为了自己方便查找。 希望对你也有帮助。 我能下载到的...

u013553529
2017/12/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
10
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部