`

我使用过的Linux命令之while - Bash中的While循环

阅读更多

我使用过的Linux命令之while - Bash中的While循环

本文链接:http://codingstandards.iteye.com/blog/780524    (转载请注明出处)

 

用途说明

while循环是Shell中常用的语法结构,它与其他编程语言中的while有些类似,只是写法有些不一样罢了。

常用格式

格式一

while 条件;

do

    语句

done

格式二 死循环

while true

do

    语句

done

格式三 死循环

while :

do

    语句

done

格式四 死循环

while [ 1 ]

do

    语句

done

格式五 死循环

while [ 0 ]

do

    语句

done

使用示例

示例一

COUNTER=0
while [  $COUNTER -lt 10 ]; do
    echo The counter is $COUNTER
    let COUNTER=COUNTER+1 
done

 

[root@jfht ~]# COUNTER=0
[root@jfht ~]# while [  $COUNTER -lt 10 ]; do
>     echo The counter is $COUNTER
>     let COUNTER=COUNTER+1
> done
The counter is 0
The counter is 1
The counter is 2
The counter is 3
The counter is 4
The counter is 5
The counter is 6
The counter is 7
The counter is 8
The counter is 9
[root@jfht ~]#

 

这个while循环改用for循环更好些

for ((COUNTER=0; COUNTER<10; ++COUNTER))
do
    echo The counter is $COUNTER
done

 

[root@jfht ~]# for ((COUNTER=0; COUNTER<10; ++COUNTER))
> do
>     echo The counter is $COUNTER
> done
The counter is 0
The counter is 1
The counter is 2
The counter is 3
The counter is 4
The counter is 5
The counter is 6
The counter is 7
The counter is 8
The counter is 9
[root@jfht ~]#

示例二

while true
do
    date
    sleep 1
done

 

[root@jfht ~]# while true
> do
>     date
>     sleep 1
> done
2010年 10月 10日 星期日 16:35:22 CST
2010年 10月 10日 星期日 16:35:23 CST
2010年 10月 10日 星期日 16:35:24 CST
2010年 10月 10日 星期日 16:35:25 CST
2010年 10月 10日 星期日 16:35:26 CST
2010年 10月 10日 星期日 16:35:27 CST
Ctrl+C
[root@jfht ~]#

 

示例三 读取输入

while read line
do
    echo $line
done

 

[root@jfht ~]# while read line
> do
>     echo $line
> done
hello
hello
world
worldCtrl+D
[root@jfht ~]#

 

实例四 处理命令行参数

文件 while_4.sh

#!/bin/sh

usage()
{
    echo "usage: $0 [-a] [-e <admin>] [-f <serverfile>] [-h] [-d <domain>] [-s <whois_server>] [-q] [-x <warndays>]"
}

while getopts ae:f:hd:s:qx: option
do
        case "${option}" in
                a) ALARM="TRUE";;
                e) ADMIN=${OPTARG};;
                d) DOMAIN=${OPTARG};;
                f) SERVERFILE=$OPTARG;;
                s) WHOIS_SERVER=$OPTARG;;
                q) QUIET="TRUE";;
                x) WARNDAYS=$OPTARG;;
                \?) usage; exit 1;;
        esac
done

echo "ALARM=$ALARM"
echo "ADMIN=$ADMIN"
 

[root@jfht ~]# cat while_4.sh
#!/bin/sh

usage()
{
    echo "usage: $0 [-a] [-e <admin>] [-f <serverfile>] [-h] [-d <domain>] [-s <whois_server>] [-q] [-x <warndays>]"
}

while getopts ae:f:hd:s:qx: option
do
        case "${option}" in
                a) ALARM="TRUE";;
                e) ADMIN=${OPTARG};;
                d) DOMAIN=${OPTARG};;
                f) SERVERFILE=$OPTARG;;
                s) WHOIS_SERVER=$OPTARG;;
                q) QUIET="TRUE";;
                x) WARNDAYS=$OPTARG;;
                \?) usage; exit 1;;
        esac
done

echo "ALARM=$ALARM"
echo "ADMIN=$ADMIN"

[root@jfht ~]# chmod +x while_4.sh
[root@jfht ~]# ./while_4.sh
ALARM=
ADMIN=
[root@jfht ~]# ./while_4.sh -a
ALARM=TRUE
ADMIN=
[root@jfht ~]# ./while_4.sh -e hy
ALARM=
ADMIN=hy
[root@jfht ~]#

问题思考

1. 为什么 while [ 0 ] 也会是死循环?

2. 怎么使用while read line从文件中读入数据?

相关资料

【1】BASH Programming - Introduction HOW-TO 7.3 While sample

【2】Audbel 语法单行BASH的无限while循环

【3】一个有很多while示例的英文网页 Bash While Loop Example

 

返回 我使用过的Linux命令系列总目录

 

2
0
分享到:
评论
1 楼 张雪源 2011-01-13  
貌似【】默认判读里面的字串长度是不是0,【 0 】长度不是0
man test
我是这样理解的

相关推荐

    Linux高级bash编程

    使用命令替换来产生for循环的[list] 10-7. 对于二进制文件的一个grep替换 10-8. 列出系统上的所有用户 10-9. 在目录的所有文件中查找源字串 10-10. 列出目录中所有的符号连接文件 10-11. 将目录中的符号连接文件名...

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二)

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二) shell中的if 单分支 if 条件测试 ;then 命令序列 fi 双分支 if 条件测试 ;then 命令序列1 else 命令序列2 fi 多分支 if 条件测试 ;...

    RED HAT LINUX 6大全

    4.8 使用Red Hat的wmconfig命令 54 4.9 个人化的X资源文件 54 4.10 使用xdm 55 4.11 XFree86疑难解答 57 4.12 小结 57 第5章 窗口管理器 58 5.1 GNOME X环境 59 5.1.1 什么是GNOME 59 5.1.2 GNOME 安装组件 59 5.1.3...

    Shell脚本学习笔记

    第1章 BashShell命令 6 1.1 Shell提示符 6 1.2 文件与目录Shell命令 7 1.2.1 更改目录命令(cd) 7 1.2.2 列表命令(ls) 7 1.2.3 操作文件命令 10 1.2.4 目录处理命令 14 1.2.5 查看文件内容命令 15 1.3 监控程序 20 ...

    bash浅入

    目录shell脚本规范bash字符变量运算符算数运算符关系运算符逻辑运算符字符串运算符文件比较运算符流程控制if elsefor 循环while 语句until 循环case 语句break 命令continue 命令函数参考 Bash(GNU Bourne-Again ...

    Shell脚本之无限循环的两种方法

    for 实现: 代码如下: #!/bin/bash set i=0 set j=0 for((i=0;i&lt;10;)) ... echo “————-j is $j ——————-“ ...while实现: ... 您可能感兴趣的文章:Shell中的循环语句for、while、until实例讲解Shel

    LINUX/UNIX Shell编程大作业

     你可以使用UNIX/LINUX中一些比较简单的命令或命令组合来执行1、2、3、4、5的任务。对于任务6和7,你需要编写单独的Shell脚本文件(必须分别命名为add和delete)并且在你的主脚本menu文件中调用这些脚本文件。  ...

    跟老男孩学Linux运维:Shell编程实战

    / 1819.5 case条件语句的Linux系统脚本范例 / 1879.6 本章小结 / 191第10章 while循环和until循环的应用实践 / 19210.1 当型和直到型循环语法 / 19210.2 当型和直到型循环的基本范例 / 194第11章 for和select...

    Shell脚本break和continue命令简明教程

    在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。 break命令 break命令允许跳出所有循环(终止执行后面的所有循环)。 下面的例子中,脚本进入死...

    收缩分裂-sda:Bash脚本,它收缩HDD分区并从剩余的可用空间创建一个新分区,对其进行格式化并挂载它

    Bash脚本,可使用fdisk实用程序在GNU / Linux上缩小分配的硬盘分区, 分割分区,并从剩余的可用空间中创建一个新分区,对其进行格式化并挂载它。 以脚本中的/ dev / vda分区为例,缩小到30 GB。 仅当使用少于或...

    shell0.10.0解析版

    第二版本 0.10.1 第0步骤: ...(而子进程里如果有while循环的话,ctrl+c 却杀不死while) 第9步骤: alias 别名命令 实现:alias 与 unalias 命令 alias 命令在隐藏文件 .aliasrc里,可自己手动向里面添加

    线性规划的matlab代码-software_engineering:这是与深度学习相关的软件工程的仓库

    线性规划的matlab代码 software_engineering This ...循环:while/for in/xargs/find -exec 1.1.5 监测系统:w/bmon/iostat/iotop 1.1.6 misc:ln/export/实时设置变量/source/chmod/chown/#!/sshpass/

    宋劲彬的嵌入式C语言一站式编程

    目录 历史 前言 I....1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 ...3. 在Linux C编程中使用Unicode和UTF-8 B. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引

    让Linux下的cron以秒为单位执行shell脚本的3种方法

    当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如下: cat kick.sh 代码如下: #!/bin/bash while : ;do  /home/somedir/scripts.sh 2&gt;/dev/null &  sleep 3 done 注意第一次运行时请...

    机器学习笔记

    第14天课程内容: 1、Linux内核编译(2):编译内核的步骤、重新编译 2、CentOS系统安装:创建工具、语法检查、安装过程如何获取kickstart文件 3、anaconda应用的工作过程、anaconda...5、bash脚本编程之while循环语句

    shell脚本编程之for语句、if语句使用介绍

    面向过程:顺序执行选择执行: if, case循环执行: for, while, until 一、for语句  格式: for 变量 in 列表;do 语句1; 语句2; … done 例1、写一个脚本,添加10个用户,并让每个用户的密码同用户名】 代码...

Global site tag (gtag.js) - Google Analytics