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

相关推荐

  • N25-第四周作业

    1、复制/etc/skel目录为/home/tuse1,要求/home/tuse1及其内部文件的属组和其它用户均没有任何访问权限。   cp -r /etc/skel /home/tuser1;chmod go= /home/tuse1 2、编辑/etc/group文件,添加组hadoop    vi /et…

    Linux干货 2016-12-27
  • 第七周

    第七周 1 创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动…

    Linux干货 2017-02-20
  • 如何在 Linux 下大量屏蔽恶意 IP 地址

    很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快…

    Linux干货 2015-02-26
  • 文件管理命令及文件名通配

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类的命令 mkdir 用法: mkdir [选项]… 目录… 选项:  -p 递归创建多个目录 实例: [root@centos7 ~]# mkdir -p /tmp/jerry/2016/…

    Linux干货 2016-11-06
  • 第二天作业

    一、Linux 文件管理类命令   cd、pwd、mkdir、rmdir、ls、cp、rm、mv、cat、tac、more、less、head、tail、touch     1、目录类相关命令     cd:change directory 切换目录     pwd:print …

    Linux干货 2016-08-22
  • 浅谈bash shell 变量

    一、简述 变量是指内存空间的命名,指向内存中一个或一组地址。bash shell中的变量属于弱类型变量,使用变量无需声明、不需要指定类型,默认为字符型变量。 二、变量命名、赋值、引用 (1)命名规则:     1.只能使用字母,数字,下划线;并且不能使用数字开头。     2.不…

    Linux干货 2016-08-15