for,while,until简介

Shell(以Bash为例)中的循环语句一般有for、while、until这几种,偶尔还有写错语法的时候,这里结合实例来自己总结一下。也为今后使用提供一个快捷的资料获取渠道。

一、for循环语句

实例1.1 最基本的for循环: (传统的形式,for var in …)

代码如下:

#!/bin/bash
for x in one two three four
do
        echo number $x
done

注:”for” 循环总是接收 “in” 语句之后的某种类型的字列表。在本例中,指定了四个英语单词,但是字列表也可以引用磁盘上的文件,甚至文件通配符。
实例1.2 对目录中的文件做for循环

代码如下:



#!/bin/bash
for x in /var/log/*
do
        #echo "$x is a file living in /var/log"
        echo $(basename $x) is a file living in /var/log
done

注:这个$x获得的是绝对路径文件名;可以使用 “basename” 可执行程序来除去前面的路径信息。如果只引用当前工作目录中的文件(例如,如果输入 “for x in *”),则产生的文件列表将没有路径信息的前缀。
实例1.3 对位置参数做for循环


代码如下:

#!/bin/bash
for thing in "$@"
do
        echo you typed ${thing}.
done

实例1.4 for循环中用seq产生循环次数,加上C语言形式的for循环语句


代码如下:

#!/bin/bash
echo "for: Traditional form: for var in …"
for j in $(seq 1 5)
do
        echo $j
done

echo "for: C language form: for (( exp1; exp2; exp3 ))"

for (( i=1; i<=5; i++ ))
do
        echo "i=$i"
done

注:对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了;这里的C语言for循环风格是挺熟悉的吧。

二、while循环语句

实例2.1 循环输出1到10的数字


代码如下:

#!/bin/bash
myvar=1
while [ $myvar -le 10 ]
do
        echo $myvar
        myvar=$(( $myvar + 1 ))
done

注:只要特定条件为真,”while” 语句就会执行

三、until循环语句

实例3.1 循环输出1到10的数字
“Until” 语句提供了与 “while” 语句相反的功能:只要特定条件为假,它们就重复。下面是一个与前面的 “while” 循环具有同等功能的 “until” 循环。


代码如下:

#!/bin/bash
myvar=1
until [ $myvar -gt 10 ]
do
        echo $myvar
       myvar=$(( $myvar + 1 ))
done

Linux Shell中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。
我所知道的,bash中,变量自增,目前有五种方法:
1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))
可以实践一下,简单的实例如下:


代码如下:

#!/bin/bash
i=0;
while [ $i -lt 4 ];
do
      echo $i;
      i=`expr $i + 1`;
      # let i+=1;
      # ((i++));
      # i=$[$i+1];
      # i=$(( $i + 1 ))
done

原创文章,作者:YJianFei,如若转载,请注明出处:http://www.178linux.com/37161

(0)
YJianFeiYJianFei
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • 用shell脚本打等腰三角新

       *   ***  ***** *******   预览图形 发现图形由三个变量组成 行数n 每行的空格数a 和每行的符号数b 关系是    a=n-当前行数    b=2xn-1   并且空格都在符号前 根据关系编写脚本 #!/bin/bash read…

    Linux干货 2016-08-22
  • 好好学习 天天向上 先试试

    Linux干货 2016-10-27
  • http协议简介

        http:Hyper Text Transfer Protocol,超文本传输协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hyp…

    Linux干货 2015-11-18
  • 推荐-Linux命令帮助的获取

    帮助命令 1. 使用帮助命令和帮助选项来获取帮助 2. 使用man来查看命令使用手册(manual) 3. 使用info来查看命令的信息页 4. 程序自身的帮助文档 5. 程序官方文档 6. 发行版的官方文档 7. 使用Google搜索关键字 1. 使用帮助命令和帮助选项来获取帮助 Linux系统中命令分为【内部命令】和【外部命令】。 【内部命令】:内部命令…

    Linux干货 2016-03-25
  • N25-第十一周

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送者: 1.使用单项加密算法提取生成数据的特征码 2.使用自己的私钥加密特征码附加在数据后面 3.生成用于对称加密的临时密钥 4.用此临时密钥加密数据和已经使用私钥加密后的特征码 5.使用接收方的公钥加密此临时密钥,附加在对称后的数据后方 接收方: 1.使用自己的私钥解密的临时秘钥;从而获得对方的对称密钥 2…

    2017-06-05
  • 第三周博客作业

      开始学习已经三周了,感觉到年底有些时间不够,作业也交的越来越晚,需要加紧学习的进度了。   1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  最简单的实现题目要求的方法是使用cut命令只显示用户名并用sort命令排序去重: [root@localhost ~]# who |&nbs…

    Linux干货 2016-12-20