`

我使用过的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-Shell快速入门

    条件控制通常用if…then…elif…else…fi语句来实现,循环控制则包括for循环、while循环以及until循环。BASH还支持使用函数,函数的定义和调用能够帮助程序员在脚本中重用代码,提高编程效率。 BASH还涉及到输入、...

    linux-一行bash命令集合的仓库

    在Linux世界中,Bash(Bourne-Again SHell)是广泛使用的命令行解释器,它提供了丰富的命令行工具和脚本编写能力。"Linux-一行bash命令集合的仓库"是一个宝贵的资源,包含了各种实用的一行Bash命令,旨在帮助用户...

    linux-Bash学习指南

    在IT行业中,Linux操作系统是开发者和系统管理员的重要工具,而Bash(Bourne-Again SHell)作为Linux默认的命令行解释器,是与操作系统交互的基础。本指南旨在深入探讨Bash,帮助读者掌握其核心概念、常用命令以及...

    Python-bash命令和语法带你升级打boss

    在IT领域,尤其是在系统管理和自动化任务执行中,Bash(Bourne-Again SHell)是一种广泛使用的命令行解释器,它是Unix、Linux和macOS等操作系统中的默认shell。掌握Bash命令和语法对于提高工作效率至关重要,特别是...

    linux shell循环:for、while、until用法详解

    此外,还可以使用命令的输出(`$(COMMAND)`)或者 glob 模式(如 `*.sh`)来作为列表。 **特殊用法**:双小括号 `((…))` 使得在bash Shell中可以进行算术运算和C语言风格的变量操作,例如: ```bash for ((I=1; I...

    Bash Reference Manual.pdf --- Bash手册

    4. 复合命令:复合命令,如 `if` 语句、循环 (`for`, `while`) 和函数定义,提供了更高级的控制结构,使脚本具有更强的逻辑处理能力。 五、Shell 参数和扩展 1. 位置参数:`$1`, `$2`, ... `$n` 表示传递给脚本或...

    Linux常用命令-Vi-简单Shell编程.zip_linux常用命令_vi

    - Vi(Visual Editor)是Linux中最常用的文本编辑器之一,具有全屏幕编辑和命令模式两种操作方式。 - 在命令模式下,你可以通过键入命令来移动光标、删除文本、复制和粘贴等。 - 转换到插入模式(Insert mode),...

    Linux Shell Scripting with Bash

    - Bash(Bourne-Again SHell)是 Unix 和 Linux 系统中最常用的 Shell 类型之一。 - Bash 提供了丰富的功能,支持变量、数组、条件判断、循环等结构化编程特性。 **2. Bash Shell 脚本基础语法** - **脚本的第一...

    linux命令集合-手册

    Linux命令是Linux操作系统中进行系统管理、文件操作和任务执行的基本工具。这个“Linux命令集合-手册”包含了一份详尽的Linux命令大全,是开发者和学习者的宝贵资源。以下是手册中可能涵盖的一些重要知识点: 1. **...

    linux常用命令之bash入门指南 中文WORD版

    这篇“Linux常用命令之Bash入门指南”旨在帮助初学者掌握Bash的基本用法和常用命令,从而更好地理解和操作Linux系统。以下是关于Bash的一些关键知识点: 1. **Bash shell介绍**:Bash是GNU项目的一个部分,它是Unix...

    详解Bash命令行处理 Linux命令大全(修改版)

    在脚本中,可以使用控制结构如`if`、`for`和`while`循环,以及函数定义。例如,下面的脚本检查一个目录下是否存在特定文件: ```bash #!/bin/bash dir="/path/to/directory" filename="example.txt" if [ -f "$dir/...

    Shell编程介绍.pptx

    Bash 提供了许多循环分支控制命令,例如 `if`、`else`、`elif`、`fi`、`for`、`do`、`done`、`case`、`while`、`until`、`continue`、`break` 等。 交互式– Linux 终端登录后,即进入交互式的执行环境 -----------...

    linux - Advanced Bash Shell Scripting Guide

    学会使用if-else语句、for循环、while循环和until循环来控制脚本的流程。 4. **函数与别名**:了解如何定义和调用Bash函数,以及创建别名以简化命令输入。这可以提高脚本的可读性和重用性。 5. **数组**:Bash从...

    高级Bash脚本编程指南 操作系统 - Linux - 高级Bash脚本编程指南.zip

    在Linux操作系统中,Bash(Bourne-Again SHell)是默认的命令行解释器,也是编写脚本的强大工具。对于系统管理员和开发者来说,掌握高级Bash脚本编程技巧是提高工作效率的关键。这份“高级Bash脚本编程指南”涵盖了...

    linux常用命令之bash入门指南.zip

    这篇文档“linux常用命令之bash入门指南”旨在帮助初学者掌握Bash的基本用法和常用命令,从而更有效地在Linux环境中工作。 一、Bash简介 Bash是GNU项目的一部分,它是对早期的Unix Shell——Bourne Shell(sh)的一...

    linux-Utilitybashscripts使用单个命令执行可自动执行任务的实用bash脚本

    3. **循环**:Bash中的`for`和`while`循环用于重复执行任务。例如,`for i in {1..5}; do echo $i; done`会打印数字1到5。 4. **函数**:Bash脚本可以定义函数来封装可重用的代码段。`function my_func() { echo ...

    bash教程-命令语法

    **Bash**(Bourne Again SHell)是一种广泛使用的Unix shell和命令语言,由Brian Fox为GNU项目编写,作为Bourne shell的免费软件替代品。Bash不仅在Unix系统中常见,而且在Linux、Mac OS X以及许多其他类Unix操作...

    linux开发之bash编程

    脚本中可以使用各种控制结构,比如if语句、for循环、while循环和case语句等。这些控制结构能够根据不同的条件执行不同的命令序列。函数的使用则可以让脚本更加模块化,有利于代码的重用和维护。 在脚本编写的过程中...

    shell命令while循环中使用sleep命令代码示例

    在`while`循环中结合使用`sleep`命令,我们可以实现定时任务、延迟执行等功能。本文将深入探讨如何在`while`循环中使用`sleep`命令,并通过具体的代码示例进行讲解。 首先,`sleep`命令的基本用法是接收一个时间...

    Linux高级bash编程

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

Global site tag (gtag.js) - Google Analytics