shell编程基础之分支结构和循环结构

ernestwang 914 0

数值类型

  • 说明:定义或赋值,解析器都认为是字符操作,即使定义的变量是数值,除非添加let
  • 示例:
    #! /bin/bash
    
    a=1
    
    #a=a+2
    #a=$a+2
    
    #let a=a+2
    let a+=2
    
    echo $a

字符串类型

  • 单引号:其中的字符都会保持原样,变量也不会别解析
  • 双引号:其中的变量会解析(替换成变量的值),特殊字符:$、\、"
  • 反引号:其中的内容会作为命令执行
    echo `date`
  • 长度统计:echo ${#name}
  • 子串提取:echo ${name:2:3},从下标为2的字符开始提取3个

数组类型

  • 定义:a=(1 2 3)
  • 成员访问:echo ${a[1]}
  • 所有元素:echo ${a[*]}
  • 统计个数:echo ${#a[@]}

各种运算

  • test:测试真假
    #! /bin/bash
    
    if test 1 -lt 2;then
        echo 'ok'
    fi
    
    if [ 1 -lt 2 ]
    then
        echo 'ok'
    fi
  • 数值比较
    符号 说明
    -lt 小于
    -le 小于等于
    -gt 大于
    -ge 大于等于
    -eq 等于
    -ne 不等于
  • 字符串比较
    符号 说明
    = 相等
    != 不相等
    -z 判断字符串长度是否为0
    -n 判断字符串长度是否不为0
  • 文件判断
    符号 说明
    -f 是否是普通文件
    -d 是否是目录文件
    -c 是否是字符设备文件
    -b 是否是块设备文件
    -r 是否可读
    -w 是否可写
    -x 是否可执行
    -s 文件存在,并且至少有一个字符
  • 逻辑运算
    符号 说明
    -a 逻辑与(and),也可使用&&
    -o 逻辑或(or),也可以使用||
    ! 逻辑非(not)
    • 示例:
    #! /bin/bash
    
    if [ 1 -lt 3 -a 3 -gt 2 ];then
        echo 'ok'
    fi
    
    if [ 1 -lt 3 ] && [ 3 -gt 2 ];then
        echo 'ok'
    fi
    
    if [ ! 1 -gt 3 ];then
        echo 'ok'
    fi

分之结构

  • if-elif-else-fi
    #! /bin/bash
    
    if [ 1 -gt 2 ];then
        echo '1 > 2'
    elif [ 3 -gt 2 ];then
        echo '3 > 2'
    else
        echo 'xxxx'
    fi
  • case-in-esac
    #! /bin/bash
    
    read -p 'please input a charactor:' ch
    
    case $ch in
        [a-z])
            echo 'alpha'
            ;;
        [0-9])
            echo 'number'
            ;;
        *)
            echo 'others'
            ;;
    esac

循环结构

  • for-infor
    #! /bin/bash
    
    a=(1 2 3)
    
    #for x in ${a[*]}
    #for x in 11 22 33
    #for x in /etc/*
    #for x in {1..10}
    for x in `seq 1 10`
    do
        echo $x
    done
    
    for ((i=0;i<${#a[@]};i++))
    do
        echo ${a[$i]}
    done
    
    for i in {1..100}
    do
        let j+=i
    done
    
    echo $j
  • while
    #! /bin/bash
    
    i=1
    
    while [ $i -le 10 ]
    do
        echo $i
        #let i++
        #let i+=1
        ((i++))
    done
  • until
    #! /bin/bash
    
    i=1
    
    until [ $i -gt 10 ]
    do
        echo $i
        ((i++))
    done
  • break、continue关键字也可以使用

标签: shell

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了