• linux操作系统基础篇(九)


    shell脚本的运算符与流程控制

    1.运算符

    1.1 算术运算符

    +

    -

    *

    /

    %

    [root@MiWiFi-R3-srv ~]# echo $[3+1]
    4

    1.2 关系操作

    与(())连用

    <

    >

    <=

    >=

    ==

    !=

    &&

    ||

    test命令相关,[]可以达到一样的效果
    [root@MiWiFi-R3-srv ~]# x=1
    [root@MiWiFi-R3-srv ~]# [ $x -gt 1 ]
    [root@MiWiFi-R3-srv ~]# echo $?
    0

    1.3 赋值运算符

    =

    +=

    *=

    /=

    %=

    [root@MiWiFi-R3-srv ~]# x=10
    [root@MiWiFi-R3-srv ~]# ((x%3))
    [root@MiWiFi-R3-srv ~]# echo $x
    10
    [root@MiWiFi-R3-srv ~]# 
    [root@MiWiFi-R3-srv ~]# ((x%=3))
    [root@MiWiFi-R3-srv ~]# echo $x
    1

    1.4 shell里的所有计算器
    $[] (()) $(()) expr bc bc -l

    浮点运算:yum install bc -y

    [root@MiWiFi-R3-srv ~]# echo 'scale=2;1/3'|bc -l
    .33

    1.5 测试操作

    命令执行后会返回到一个系统变量中 $?
    如果$?值为0 表示命令执行成功 否则为失败


    测试命令 test [ ] [[ ]] (( ))
    打开man test 逐一介绍每个参数
    1.6、测试文件状态
    -d 目录
    -s 文件长度 > 0、非空
    -f 正规文件
    -w 可写

    -r 可读

    -x 可执行

    -L 符号连接

    -u 文件有 suid 位设置

    1.7、字符串测试
    = 两个字符串相等
    != 两个字符串不相等
    -z 空串
    -n 非空串

    [root@MiWiFi-R3-srv ~]# var1='abc'
    [root@MiWiFi-R3-srv ~]# var2='123'
    [root@MiWiFi-R3-srv ~]# [ $var1 == $var2 ]
    [root@MiWiFi-R3-srv ~]# echo $?
    1

    1.8、测试数值
    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -ge 大于等于
    -le 小于等于

    [root@MiWiFi-R3-srv ~]# [ 10000 -gt 250 ] #不要使用大于号小于号等于号等,要使用man test中规定的,详见下一小节4拓展
    [root@MiWiFi-R3-srv ~]# echo $?
    0

    1.9、拓展测试符号 [[ ]] (())
    数字测试符号
    # [ 10 < 2 ] # 语法错误
    -bash: 2: 没有那个文件或目录


    # [[ 2 > 10 ]] # 结果错误
    # echo $?
    1
    # [[ 20 > 10 ]] # 正确
    # echo $?
    0
    # (( 10 < 20 ))
    # echo $?
    0

    字符测试
    # [ "aa" = "aa" ]
    # echo $?
    0
    # [[ "aa" = "aa" ]]
    # echo $?
    0
    # (( "aa" = "aa" )) #结果错误
    # echo $?
    1
    混合测试
    # [ a = a -a 10 < 20 ]
    -bash: 20: 没有那个文件或目录
    [root@seker ~]# [[ a = a -a 10 < 20 ]]
    -bash: syntax error in conditional expression
    -bash: syntax error near `-a'
    [root@seker ~]# [[ a = a && 10 < 20 ]]
    [root@seker ~]# echo $?
    0
    [root@seker ~]# [[ a = a || 10 < 20 ]]
    [root@seker ~]# echo $?
    0
    [root@seker ~]# (( a = a || 10 < 20 ))
    [root@seker ~]# echo $?
    0
    [root@seker ~]# (( a = a && 10 < 20 ))
    [root@seker ~]# echo $?
    0

    二.流程控制

    1.if的使用

    if通常 是 

    if [判断条件];then      #如果条件满足那么

      echo ‘输出内容’          #输出内容

    else 

      echo ‘输出内容’        #否则输出

    fi                         #fi来关闭

    也可以加elif来实现多次判断

    2.循环控制

    while  (条件)

    do    动作

    done      完成

    如果while后面加:那么这条控制进入无限循环。

    for循环

    for i in [1..100]

    do

    done

    for循环的语法结构

    在循环中 

    利用continue   在某一层进行循环的退出操作。

    而break则是某一块进行循环的退出操作。

  • 相关阅读:
    LVS+KEEPALIVED(2/3)
    LVS+KEEPALIVED(1/3)
    DRF之权限源码详解
    DRF认证之源码详解
    Django REST framework之JWT
    Restful_Framework之插件
    求两个有序数组的中位数,要求时间复杂度log(m+n)
    Django_Restful_Framework视图与路由
    Django_Restful_Framework
    restFul接口设计规范
  • 原文地址:https://www.cnblogs.com/niubin/p/6946660.html
Copyright © 2020-2023  润新知