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 21:21
下一篇 2016-08-24 21:21

相关推荐

  • 常用磁盘阵列说明

    一.什么是磁盘阵列     磁盘阵列英文全名为RedundantArrays of Inexpensive Disks(RAID),即容错廉价磁盘阵列。     RAID可以将一些容量较小的磁盘通技术手段组成一个容量较大的磁盘设备,而且不只是容量上的提升,RAID还可以提供数据保…

    Linux干货 2015-04-02
  • 网络班N22期第四周博客作业

    一、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@bogon ~]# cp -r /etc/skel /home/tuser1 && chmod -R 60…

    Linux干货 2016-09-05
  • 高级文件系统管理 之RAID

    高级文件系统管理 之RAID 软RAID  mdadm:为软RAID提供管理界面                  为空余磁盘添加冗余       &nb…

    Linux干货 2016-08-30
  • 上古神器vim

    概述:     在之前的篇章中,我们介绍了一些文本的处理工具,如grep、sed、cut、sort等,但是那些工具的侧重点都在于有了现成的文本之后,对现有的文本进行一定条件的加工处理后,满足我们进一步对数据的要求。但是目前为止,还没有接触一款专业用来编辑文本的工具,本篇就来介绍一下Linux系统上自带的专业用来文本编辑…

    Linux干货 2016-08-10
  • Linux操作系统发展史

    内容摘要:Linux操作系统的诞生,Linux 的发展,Linux的特性决定其迅猛发展,Linux的应用领域与发展前景 关键词:Linux的发展  前景   1.  Linux操作系统的诞生 在1981年到1991年十年间,微软公司的MS-DOS系统一直主宰操作系统的市场,其价格十分昂贵,另一个操作系统UNIX的经销商为了高利润…

    Linux干货 2016-10-14
  • 8月2日作业

    1、在/testdir/data里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 答: ~]# groupadd g1 ~]# groupadd g2 ~]# groupadd g3 ~]# useradd -G g2 alic…

    Linux干货 2016-08-04