shell之流程控制

一、if语句、while、for循环各种小例题

1.用户验证

[[email protected] ~]# cat buer.sh
#!/bin/bash

#user=‘buer‘
#password=‘1234.com‘

read -p ‘please your name:‘ user
read -p ‘password:‘ passwd

if [ $user = ‘buer‘ -a $passwd = ‘1234.com‘ ];then
    echo ‘login successful‘
fi

2.猜年龄

#!/bin/bash

age=57
read -p ‘num:‘ num

if [ $num -eq $age ];then
    echo ‘you get it‘
elif [ $num -gt $age ];then
    echo ‘too big‘
elif [ $num -lt $age ];then
    echo ‘too samll‘
fi

3.查询成绩

[[email protected] ~]# cat score.sh
#!/bin/bash

read -p ‘please your score:‘ score

if [ $score -ge 90 ];then
    echo ‘very good!‘
elif [ $score -ge 70 -a $score -lt 90 ];then
    echo ‘good!‘
elif [ $score -ge 60 -a $score -lt 70 ];then
    echo ‘just like‘
else
    echo ‘poor‘
fi

4.for循环打印1235

[[email protected] ~]# cat for.sh
#!/bin/bash

for i in {1..5}
do
    if ((i == 4));then
        continue
        #break
    fi
    echo ‘=======‘ $i
done

脚本4的执行结果:

[[email protected] ~]# ./for.sh
======= 1
======= 2
======= 3
======= 5

5.改进版的猜年龄

[[email protected] ~]# cat oldboy.sh 

oldboy=57
while :
do
    read -p ‘input your age:‘ age
    if [ -z $age ];then
        continue
    fi
    if [ $age -eq $oldboy ];then
        echo "bingo"
        break
    elif [ $age -lt $oldboy ];then
        echo "little"
    elif [ $age -gt $oldboy ];then
        echo "big"
    else
        echo "bye"
    fi
done

脚本5结果:

[[email protected] ~]# ./oldboy.sh
input your age:45
too samll
input your age:65
too big
input your age:57
you get it
[[email protected] ~]# 

6.查看文件类型

[[email protected] ~]# cat aa.sh
#!/bin/bash

while :
do
    read -p ‘input your file:‘ file
    if [ -z $file ];then
        continue
    elif [ $file = ‘quit‘ ];then
        break
    fi
    if [ -b $file ];then
        echo "$file is block file"
    elif [ -d $file ];then
        echo "$file is directory file"
    elif [ -f $file ];then
        echo "$file is regular file"
    else
        echo "$file unkown"
    fi
done

脚本6结果:

[[email protected] ~]# sh aa.sh
input your file:/etc
/etc is directory file
input your file:/pm
/pm unkown
input your file:quit

7.打印乘法口诀表

[[email protected] ~]# cat cheng.sh
#!/bin/bash

for ((i=1;i<=9;i++))
do
    for ((j=1;j<=i;j++))
    do
    echo -n "$i*$j=$[$i*$j]"
    done
    echo
done

脚本7结果:

[[email protected] ~]# ./cheng.sh
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=44*2=84*3=124*4=16
5*1=55*2=105*3=155*4=205*5=25
6*1=66*2=126*3=186*4=246*5=306*6=36
7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

8.批量创建用户

[[email protected] ~]# cat add.sh
#!/bin/bash

for i in {1..5};
do
    useradd user$i && echo "user$i create successful"
done

脚本8执行结果:

[[email protected] ~]# sh add.sh
user1 create successful
user2 create successful
user3 create successful
user4 create successful
user5 create successful

9.批量删除用户

[[email protected] ~]# cat del.sh
#!/bin/bash

for i in {1..5};
do
    userdel -r user$i && echo "user$i delete successful"
done

脚本9执行结果:

[[email protected] ~]# sh del.sh
user1 delete successful
user2 delete successful
user3 delete successful
user4 delete successful
user5 delete successful

10.循环叠加打印数字,并睡眠1s

[[email protected] ~]# cat conut.sh
#!/bin/bash

count=1
while ((count < 10))
do
    echo ‘==========>‘ $count
    sleep 1
    ((count+=1))
done

执行结果:

[[email protected] ~]# sh conut.sh
==========> 1
==========> 2
==========> 3
==========> 4
==========> 5
==========> 6
==========> 7
==========> 8
==========> 9

11.批量ping  ip

[[email protected] ~]# cat ping.sh
#!/bin/bash

for i in {1..100};
do
    ping -c1 192.168.16.$i &> /dev/null
    if [ $? -eq 0 ];then
        echo "192.168.16.$i OK"
        echo "192.168.16.$i" >> /tmp/ip.txt
    fi
done

12.模仿登录用户小工具

[[email protected] ~]# cat login.sh
#!/bin/bash

user=‘buer‘
passwd=‘1234.com‘
while $tag
do
    read -p ‘input your name:‘ name
    read -p ‘input your passwd:‘ pas
    if [[ $name = $user ]] && [[ $pas = $passwd ]];then
        echo ‘login successful‘
        while $tag
        do
            read -p ‘>>:‘ cmd
            if [[ $cmd = ‘quit‘ ]];then
                tag=false
            else
                $cmd
            fi
        done
    fi
done

执行结果:

[[email protected] ~]# sh login.sh
input your name:buer
input your passwd:1234.com
login successful
>>:ls
aa.sh         a.txt       del.sh         oldboy.sh  模板  下载
add.sh         buer.sh   for.sh         ping.sh    视频  音乐
age.sh         cheng.sh  initial-setup-ks.cfg  score.sh   图片  桌面
anaconda-ks.cfg  conut.sh  login.sh         公共        文档
>>:pwd
/root
>>:quit
[[email protected] ~]# 

时间: 2024-10-05 21:21:39

shell之流程控制的相关文章

Linux shell脚本流程控制

博主搬家至51CTO,初来乍到,请多指教. 此次我们来通过实例解析Linux shell脚本流程控制 Linux shell脚本流程控制可分为三类:顺序执行,条件选择执行,循环执行 顺序执行:简单理解就是逐行执行脚本内容,逐行解读,逐行执行.(此处不做实例解析) 条件选择执行:可以理解为先进行某一条件的判断选择,再决定执行怎样的脚本内容.常见语句if case 条件选择语句:if if语句用法: 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件

shell脚本流程控制

shell 脚本变成使用过程中通常需要流程控制,一般情况下是顺序执行,在实际使用过程中根据不同情况需要执行不同命令,这时就用到选择执行比如if.case,有时需要重复执行多次,循环执行比如for.while.until 条件选择执行语句if 单分支 双分支 if 判断条件;then 条件为真的分支代码 fi if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi [[email protected] ~]# vim score.sh   1 #!/bin/bash  

Linux Shell之五 流程控制--选择

流程控制可根据不同的情况做不同的处理,而且可重复执行指定的程序区域,展现程序的生产力.在Bash Shell中,流程控制可以分为两大类: "选择"和"循环": 1.选择:if.case.select 2.循环:for.while.until.select 命令select既属选择也属于循环. 一.命令的结束状态 在Shell中每一个命令执行后,都会传回一个结束状态值,只分两种,如果成功,传回0,失败则传回非0. 当命令执行后,用$?来查看状态返回值,当在Shell进

10、shell编程+流程控制+分支嵌套

SHELL 编程 shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell) shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. 查看本机shell 信息: cat /etc/shells     --查看本支持的shell echo $SHELL --查看当前支持的shell shell 在执行命令时,各种命令的优先级: 别名 -> 关键字 -> 函数 -> 内置命令 -> 脚本 别名:命令的另一种形式,有些情况下可以简化命

shell的流程控制介绍

Lnux shell和Java.PHP等语言不一样,它有一套自己的流程控制语句,其中包括条件语句(if,case),循环语句(for,while,until),循环控制语句(continue,break,shift).下面我会通过一些简单明了的例子来介绍下各个语句的使用方法. 一.条件语句     1.if语句 (1)单分支结构 if 判断条件; then 条件为真的分支代码 fi 示例:testif1.sh     #!/bin/bash     a=5     if [[ a -gt 4 ]

Linux Shell之六 流程控制--循环

一.for循环 for循环的运作方式,是将串行的元素一一取出,依序放入指定的变量中,然后重复执行包含的命令区域(在do和done之间),直到所有的元素取 完为止.其中,串行是一些字符串的组合,彼此用$IFS所定义的分割字符(如空格)隔开,这些字段串称为字段. for的语法 for  变量 in 串行     将串行的字段迭代放入变量中 do     命令区域                        重复执行命令区域,知道串行中每个字段均处理过 done !/bin/bash for i i

shell 10流程控制

if 判断 if #shell #!/bin/sh a=5 if [[ $a > 3 ]];then echo "$a>3" fi #写成一行 if [[ $a < 6 ]];then echo "$a>3";fi 5>3 5>3 if else #shell #!/bin/sh a=5 if [[ $a > 8 ]];then echo "$a>8" else echo "$a<8

Linux Shell基础 - 流程控制 - for循环

01.for循环 语法一: for  time in  m n  a e    =>    以空格区分for循环个数 do echo  "This time is $time" done 语法二: s=0 for (( i=1;i<=100;i=i+1 )) do s=$(( $s+$i )) done echo "The sum of 1+2+....+100 is : $s" 例子:批量解压缩脚本 cd /lamp ls *.tar.gz>ls

Shell编程 流程控制——流程控制语句

if if<判别命令> then {命令清单1} else {命令清单2} //可省略 fi 注意,<判别命令>通常是上述的 “test<表达式>”.如果只写<表达式> 需要用中括号括起来.(中括号两边要有空格) 如果判别命令返回0(表达式成立)反之则执行else{} 分号是多个语句之间的分割符,当只有一个语句的时候,末尾无需分号,最后一个语句后面与无需分号. 例如: if []; then 完全等效于 if [] then 1 #!/bin/bach 2