bash 的过程式和循环式的编写

       bash脚本的编写,对于Linux这个多用户,多任务的系统,有很大的帮助,脚本可以帮助我们定时执行任务,过滤文本,检查系统性能等等。下面我们来了解一下过程式和循环式脚本的编写。

使用read 命令来接受输入

使用read 来把输入值分配给一个或多个shell 变量:

    -p 指定要显示的提示

    -t TIMEOUT

read 从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量。

read -p “Enter a filename: “ FILE

过程式编程语言分为三种:1.顺序执行 2.选择执行 3.循环执行

条件选择if 语句

    选择执行:

    注意:if 语句可 嵌套

    单分支

        if  判断条件:then

            条件为真的分支代码

        fi

    双分支

        if  判断条件; then

            条件为真的分支代码

        else

            条件为假的分支代码

        fi

    多分支

        if  CONDITION1 ; then

            if-true

        elif CONDITION2 ; then

            if-true

        elif CONDITION3 ; then

            if-true

            …

        else

            all-false

        fi

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if 语句。

if 实例

1 、写一个脚本/root/bin/createuser.sh ,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id 号等信息

bash 的过程式和循环式的编写

条件判断:case 语句

case 变量引用 in

PAT1)

    分支1

    ;;

PAT2)

    分支2

    ;;

*)

    默认分支

    ;;

esac

case 支持glob 风格的通配符:

*:  任意长度任意字符

?:  任意单个字符

[] :指定范围内的任意单个字符

a|b:  a或b

case 实例

1,写一个脚本/root/bin/yesorno.sh ,提示用户输入yes或no, 并判断用户输入的是yes还是no,

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

循环执行:将某代码段重复运行多次

    重复运行多少次:

        循环次数事先已知

        循环次数事先未知

    有进入条件和退出条件

分为三种:for, while, until

for 循环

for  变量名 in  列表;do    (for的变量名可以不用加$符号)

    循环体

done

执行机制 : 依次将列表中的元素赋值给“变量名“; 每次赋值后即执行一次循环体;  直到列表中的元素耗尽,循环结束。

列表生成方式:

    (1)  直接给出列表

    (2)  整数列表:

        (a) {start..end}

        (b) $(seq [start [step]] end)

    (3)  返回列表的命令

        $(COMMAND)

    (4)  使用glob,如:*.sh

    (5)  变量引用;

        $@, $*

for实例

1,用for编写一个99乘法表。

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

while 循环

while CONDITION; do

    循环体

done

CONDITION :循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true",则执行一次循环;直到条件测试状态为“false”终止循环.

因此:CONDTION 一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

进入条件:CONDITION 为true;(真)

退出条件:CONDITION 为false ;(假)

while实例

1,用while编写一个99乘法表。

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

until 循环

until CONDITION; do

    循环体

done

进入条件: CONDITION  为false (假)

退出条件: CONDITION  为true(真)

until示例:

 1、随机生成10 以内的数字,实现猜字游戏,提示比较大或小,相等则退出

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

循环控制语句continue :用于循环体中

continue [N] :提前结束第N 层的本轮循环,而直接进入下一轮判断;最内层为第1层。

while CONDTIITON1; do

    CMD1

    …

    if CONDITION2; then

        continue

    fi

    CMDn

    …

done

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

循环控制语句break:用于循环体中

break [N] :提前结束第N 层循环, 最内层为第1层。

while CONDTIITON1; do

    CMD1

    …

    if CONDITION2; then

        break

    fi

    CMDn

    …

done

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

循环控制语句exit:用于循环体中

exit :直接结束整个循环,后面的不再执行。

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

创建无限循环

while true; do

    循环体

done

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

until false; do

    循环体

Done

bash 的过程式和循环式的编写

bash 的过程式和循环式的编写

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

(0)
AN0519AN0519
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • LVS NAT + Keepalived HOWTO

    LVS NAT + Keepalived HOWTO   这篇文章主要讲解了,基于LVS/NAT,安装,运行与检测keepalived 目录     1、什么是keepalived?     2、规划你的网络 &nbsp…

    Linux干货 2015-09-21
  • 网络属性配置(二)

    本文接上篇。。。 ip address -protocol address management. ip address add -add new protocol address   ip addr add IFADDR   label NAME :为额外添加的地址指明接口别名    [broadcast ADDRE…

    Linux干货 2017-01-02
  • bash功能特性一 变量

    一、什么是shell     shell是为了使用户能够操作应用程序的接口程序。如经常使用的图形界面及命令行界面都是shell。下面来介绍一下bash这个shell的功能。 二、变量的概念     被命名的内存空间即为变量,Linux中内置了许多变量,我们可以通过修改这些变量的值…

    Linux干货 2015-04-19
  • 08.04 笔记总结

    1.ps axo  user,ruser,group,rgroup,cmd  //  ruser  表示程序发起的用户,一般是指系统当前的用户  //  user  表示程序的所有者。在大数情况下,两个用户都是系统当前的用户, 之后当程序被赋予suid的时候,可能user会发生变化。 2.…

    Linux干货 2016-08-08
  • 优秀程序员的十个习惯

    在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需…

    Linux干货 2015-04-01
  • bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容

    bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容 bash的基础特性:命令的执行状态结果 bash通过状态返回值来输出此结果: 成功:0 失败:1-255 命令执行完成之后,其状态返回值保存于bash的特殊变量$?中。 [root@localhost ~]# ls anaconda-ks.cfg [root@localhost ~]# echo…

    Linux干货 2018-03-11