bash循环语句

Posted 小学生^.^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash循环语句相关的知识,希望对你有一定的参考价值。

1  )单分支if语句

if 测试条件 ;then

如果满足条件就执行这里的代码

f

 

2)双分支的if语句

if  测试条件;then

如果满足条件就执行这里的代码

else

如果不满足条件就执行这里的 代码

fi

 


  3)  read命令:通过键盘输入数据,将键盘输入的值传递给脚本的中定义的变量,从而完成变量赋值操作 。脚本中使用read命令可以使得用户能够与程序进行交互
 read命令的使用格式

# 这里变量名的意义在于将用户输入的值传递给这个变量名,那么在脚本中我们就可以拿到用户输入的值了
read [选项] [变量名]

选项:
    -p (promp):在用户在键盘输入数据时,指定显示提示符
    -t(timeout):指定超时时间,如果用户在指定的超时时间都没有输入的话,那么就终止脚本的执行

 


  4)   在运行脚本前,我们一般先对脚本的语法进行检查,如果脚本有bug,我们再调试脚本
    语法检查

bash -n 脚本路径

    脚本调试

bash -x 脚本路径

    (2)过程式编程语言的执行流程

顺序执行
选择执行
循环执行

选择执行

 

 

 

(1)&&,||  
    command1 && command2:如果command1正确,也执行command2;如果command1不正确,不执行command2
    command1 || command2:如果command1正确,不执行command2;如果command1不正确,执行command2

(2)if语句
    if语句:三种格式
    我们之前已经学习了单分支的if语句
    接下来学习if多分支和if嵌套语句

(3)case语句

    if嵌套语句格式

if [ 条件 ];then
    if [ 条件 ];then
        执行这里的代码
    fi
fi

if [ 条件 ];then
    if [ 条件 ];then
        执行这里的代码
    fi
else
    if [ 条件 ];then
        执行这里的代码
    fi
fi

    if 多分支语句格式(注意:多个分支只会执行一个,执行首先为真的分支)

if  [ 条件1 ];then
        条件1为真执行这里的代码
elif [ 条件2 ];then
        条件2为真执行这里的代码
elif [ 条件3 ];then
        条件3为真执行这里的代码
.
.
.

elif [ 条件n ];then
        条件n为真执行这里的代码
else
        如果所有的条件都不满足时,执行这里的代码
fi

注意:多个分支只会执行一个,执行首先为真的分支





循环语句

前言:循环就是将一段代码重复执行0,1次或多次。
进入条件:条件满足时,需要进入循环
退出条件:每个循环都应该有退出条件,有机会退出循环
bash的循环分类:

    for循环
    while循环
    until循环

for循环有两种格式 (重点必须掌握)
        第一种格式:遍历列表 (重点必须掌握)
        第二种格式:控制变量 (重点必须掌握)
    变量列表

for 变量 in 列表; do
    循环体
done

进入条件:只要列表中有元素,即可进入循环
退出循环:列表中的元素遍历完成

while循环 (重点必须掌握)

    while CONDITION ; do
    循环体
    循环控制变量的修正表达式
    done
    进入条件:CONDITION测试为“真”
    退出条件:CONDITION测试为“假”


until循环 (非重点了解即可)

    until CONDITION ; do
    循环体
    循环控制变量
    done
    进入条件:CONDITION测试为“假”
    退出条件:CONDITION测试为“真”



死循环


前言:continue、break、sleep命令、死循环,在循环语句中扮演了重要的角色,他们可以控制整个循环的执行过程
continue:跳出本次循环,进入下一轮循环
break:跳出整个循环
sleep:程序睡眠一个时间段
死循环:条件为true,永远为死循环


    continue语句格式

while  [ 条件1 ]; do
    满足条件执行这里的代码
    if [ 条件2 ]; then
        # 跳出当前循环进入下一轮循环
        continue
    fi
    满足条件执行这里的代码
done

    

    break :直接跳出整个循环

while [条件1]; do
    执行这里的代码
    if [条件2]; then
        break
    fi
    执行这里的代码
done



    sleep命令
    示例:每隔3秒钟到系统上获取已经登入的用户的信息,其中,如果sb用户登入了系统,则给QQ发送邮件,主题为“sb user is login”,并退出

先修改/etc/mail.rc文件
set [email protected] smtp=smtp.163.com
set [email protected] smtp-auth-password=yhy3426356
set smtp-auth=login

while true; do
    sleep 3
    if who | grep logstash &>/dev/null;then
        echo "sb user is login" | mail -s ‘somebody login‘ [email protected]
        break
    fi
done




    while循环的特殊用法(遍历文件的行)

while read VARIABLE;do
    循环体
done < /PATH/TO/FILE

意思是:依次读取/PATH/TO/FILE文件中的每一行,且将其赋值给VARIABLE变量

 

以上是关于bash循环语句的主要内容,如果未能解决你的问题,请参考以下文章

12.3bash脚本循环语句

Linux基础之bash脚本进阶篇-循环语句(for,while,until)及其特殊用法

bash循环语句

循环语句和函数

玩转Bash脚本:循环结构之while循环(转)

如果语句过早退出Bash脚本循环