Linux基础知识之选择循环执行

1.选择执行:

    a.单分支if语句:

        if 判断条件;then(此处必须有;和then  then可以单独占一行)

            语句1

            语句2

            

        fi(fi必须单独占一行)

    b.双分支if语句:

        if 判断条件;then(此处必须有;和then  then可以单独占一行时,分号可以省略)

            语句1

            语句2

            

        else

            语句3

            语句4

            

        fi(fi必须单独占一行)

    c.多分支if语句:

        if 判断条件;then(此处必须有;和then  then可以单独占一行时,分号可以省略)

            语句1

            语句2

            

        elif 判断条件;then

            语句3

            语句4

            

        elif …

            语句…

        else

            语句n

            

        fi(fi必须单独占一行)

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

    d.case语句

        case SWITCH in

        value1)

            statement

            

            ;;

        value2)

            statement

            

            ;;

        value3)

            statement

            

            ;;

        *)

            statement

            

            ;;

        esac

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

    重读运行多次:

        循环次数事先已知

        循环次数事先未知

        有进入条件和退出条件

    循环有 for while until 

    a.for循环:

    for  变量名 in  列表;do

    循环体

    done

    执行机制 :

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

    ※for循环根据列表执行,循环次数为列表中的次数

    列表生成方式:

        (1)直接给出列表

        (2)整数列表

            {start..end}

            $(seq [start [step]] end)

        (3)返回列表的命令

            $(COMMAND)

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

        (5)变量引用;

            $@,$*

    b.while 循环

    while CONDITION;do

    循环体

    done

    CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环。因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

    进入条件:CONDITION为true

    退出条件:CONDITION为false

    while当条件为真,执行循环,当条件为假,退出循环

    while循环之后,还有命令的时候,当while循环结束后,会执行while后面的命令

    c.until 循环

    until CONDITION; do

    循环体

    done

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

    进入条件:CONDITION为false

    退出条件:CONDITION为true

    d.循环控制语句 continue

    用于循环体中

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

    while CONDTIITON1; do

    CMD1

    

    if CONDITION2; then

    CMD2

    continue

    fi

    CMDn

    

    done

    e.循环控制语句break

    用于循环体中

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

    while CONDTIITON1; do

    CMD1

    

    if CONDITION2; then

     CMD2

    break

    fi

    CMDn

    

    done

    f.创建无限循环

    while true; do

    循环体

    done

    until false; do

    循环体

    done

    g.continue break exit的区别:

    当循环条件满足continue时,提起结束该轮while循环,进入下一轮while循环(结束的是本轮while循环)

    当循环条件满足break时,提前结束循环体的循环,改为执行循环之后的命令(结束的是循环体的执行)

    当循环条件满足exit时,提前结束脚本的执行,直接退出脚本的执行,exit # 可以指定退出的错误值#

练习题总结:

1、写一个脚本/root/bin/createuser.sh ,实现如下功能:

使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id 号等信息

    #!/bin/bash

read -p "please enter a username:" username

if id $username &>/dev/null ;then

echo "$username is exist."

else 

echo "No such user."

echo "Adding $username….."

useradd $username

echo "Adding $username success."

id $username

fi

2、写一个脚本/root/bin/yesorno.sh ,提示用户输入yes或no, 并判断用户输入的是yes还是no, 或是其它信息

#!/bin/bash

read -p "please enter yes/no: " yesorno

case $yesorno in

[yY][Ee][Ss]|[Yy])

  echo "Yes!!!"

  ;;

[Nn][Oo]|[Nn])

  echo "No!!!"

  ;;

*)

  echo "Other char!!!"

esac

3、写一个脚本/root/bin/filetype.sh, 判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)

#!/bin/bash

read -p "please enter file:  " filename

if [ -L $filename ];then

   echo "$filename is Symbol file."

elif [ -c $filename ];then

   echo "$filename is char file."

elif [ -d $filename ];then

   echo "$filename is dir file."

elif [ -b $filename ];then

   echo "$filename is  block file."

elif [ -f $filename ];then

   echo "$filename is common file."

elif [ -p $filename ];then

   echo "$filename is pipe file."

elif [ -S $filename ];then

   echo "$filename is socket file."

else

  echo "please enter a Correct file"

fi

4、判断/var/ 目录下所有文件的类型

#!/bin/bash

for filename in /var/*;do 

if [ -L $filename ];then

   echo "$filename is Symbol file."

elif [ -c $filename ];then

   echo "$filename is char file."

elif [ -d $filename ];then

   echo "$filename is dir file."

elif [ -b $filename ];then

   echo "$filename is  block file."

elif [ -f $filename ];then

   echo "$filename is common file."

elif [ -p $filename ];then

   echo "$filename is pipe file."

elif [ -S $filename ];then

   echo "$filename is socket file."

echo "please enter a Correct file"

fi

done

5、添加10个用户user1-user10,密码同用户名

#!/bin/bash

for I in `seq 1 10`;do

if ! id user$I &>/dev/null;then

useradd user$I

echo "user$I" | passwd –stdin user$I

else

echo "The user$I has been exist."

fi

done

7、写一个脚本,提示输入正整数n的值,计算1+2+3+…n的总和

#!/bin/bash

read -p "please input a integer: " number

if [ $number -gt 0 ] ;then

   for i in `seq 1 $number`;do

        sum=$[$sum+$i] 

  done

     echo $sum

else

   echo "please input a integer."

fi

8、打印九九乘法口诀

#!/bin/bash

for i in {1..9};do

   for j in `seq 1 $i`;do

   echo -ne "$i*$j=$(($i*$j))\t"

   let j++

   done

   echo -e "\n"

   let i++

done

#!/bin/bash

i=1

while [ $i -le 9 ]

do 

   j=1

   while [ $j -le $i ]

   do

   echo -ne "$i*$j=$(($i*$j))\t"

   let j++

   done

   echo -e "\t"

   let i++

done

9、求100以内所有正整数之和

#!/bin/bash

sum=0

i=0

while [ $i -le 100 ]

do

   sum=$[$sum+$i]

   let i++

done

echo $sum

10、通过ping 命令探测10.1.252.1-254 范围内的所有主机的在线状态,统计在线主机和离线主机各多少。

#!/bin/bash

I=1

while [ $I -le 255 ]

do

   if ping -c 1 -W 1 10.1.252.$I &> /dev/null;then

     echo -e "10.1.252.$I   online."

   else 

     echo -e "10.1.252.$I    offline."   

   fi

   let I++

done

11、利用变量RANDOM 生成10个随机数字,输出这个10数字,并显示其中的最大者和最小者

#!/bin/bash

number=`echo $[RANDOM%10+1]`

echo $number

read -p "please input number: " n

until [ $n -eq $number ]

do 

   if [ $n -lt $number ];then

    read -p "please input a number > $n :" n

   else

    read -p "please input a number < $n :" n

   fi

done

echo "You are right !!!"

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

#!/bin/bash

number=`echo $[RANDOM%10+1]`

echo $number

read -p "please input number: " n

until [ $n -eq $number ]

do 

   if [ $n -lt $number ];then

    read -p "please input a number > $n :" n

   else

    read -p "please input a number < $n :" n

   fi

done

echo "You are right !!!"

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

(0)
sjsirsjsir
上一篇 2016-08-18
下一篇 2016-08-19

相关推荐

  • Linux包管理:rpm/yum/编译安装

    rpm:安装,查询,升级,校验,卸载   Topic: 程序包 rpm管理 yum管理   程序包:   什么是程序包管理器: 将编译好的应用程序的各个组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作   程序包的组成清单: 文件清单 安装或卸载时运行的脚本 数据库(公共) …

    2017-09-14
  • HTTP的基础配置

    目录: 1.修改监听的IP和PORT 2.持久连接(保持连接,长连接) 3.MPM 4.DSO 5.定义’Main’ server_name的文档页面路径 6.站点访问控制常见机制 7.定义站点主页面: 8.定义路径别名 9.设定默认字符集 10.日志设定 11.基于用户的访问控制 12.虚拟主机 13.status页面 14.cur…

    Linux干货 2017-08-08
  • 推荐-常用RAID级别详解

    一、RAID是什么       RAID(Redundant Arrays of Indent Disks)的名称是独立磁盘冗余阵列,是一种通过将多块硬盘按照某种特定的结构组织起来当做一块硬盘来使用的技术,多块硬盘不同的组织结构我们称之为RAID的级别。而RAID技术的特性主要表现在两个方面: (1)提高硬盘…

    Linux干货 2016-03-27
  • linux中的管道符

    管道符 less只能看文件 但是这样做会产生一个垃圾文件ls.txt,所以下面我们就会需要用到管道符 |只将传递正确结果传递给 而使用这两种方法可以传递正确和错误的结果[root@localhost ~]# ls /etc/passwd /cpp/passwd 2>&1|less   ,  (2>&1…

    2017-07-22
  • RAID+LVM详解

                                        一.RAID篇 一.什么是RAID   磁盘阵列全名是『Redundant Arrays…

    Linux干货 2016-09-07
  • 计算机的组成和其功能

    图:计算机组成架构 计算机由硬件和软件组成 硬件部分: CPU:又称中央处理器,整个系统最高执行单元,执行各种运算,控制电脑自动协调地完成各种操作。 主板:它把计算机的各个部件紧密的连接在一起,各个部件通过主板进行数据传输,计算机重要的“交通枢纽”都在主板上,他的工作稳定性影响整机的工作稳定性。因同CPU的插脚和性能不同,所以针对不同的CPU也有不同的主板。…

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 13:23

    文章对循环语句的语法进行了总结,并且通过示例加深了自己对语句相应的语法认识和理解,shell脚本要想写好了,只有多写,多读优秀代码。