美文网首页
linux shell编程学习--四函五流

linux shell编程学习--四函五流

作者: 爱编程的凯哥 | 来源:发表于2018-12-14 22:57 被阅读0次
    • shell控制流程

      • if else 语法,test、[] 、[[]]、(())、let 使用
      注意,如果没有else后等内容,else就不要写,直接fi结束if语句,注意用任何语法空格一定要多些,如=号两边,[]中都要每个空格不能少,否则可能会报错

    在shell中条件判断有几种,test、[] 、[[]]、(())、let,其中

    1. test使用等同于[]
    2. [[]]支持 &&、||等逻辑语法,[]不支持,[] 需要使用-a,-o的语法实现与或判断
    3. (())使用等同于let,用于整数运算,且使用变量时可以不用加$号
    
    #!/bin/bash
    set -x
    args=${@}
    echo "所有参数${args}"
    echo "参数1=$1"
    echo "参数2=$2"
    c=10
    d=90
    f=0
    let  "f = c + d"
    echo "f的结果为"$f
    
    
    a="nihao"
    b="nihao"
    if test  $a = $b
    then
            echo "参数1为test"
    else
            echo "参数1不是test"
    fi
    #[]写法
    if  [ !$2 -o $2 = "do" ]
    then
            echo "参数2为do"
    else
            echo "参数2不为do"
    fi
    #[[]]写法
    if  [[ !$2 || $2 = "do" ]]
    then
            echo "第二次参数2为do"
    else
            echo "第二次参数2不为do"
    fi
    
    if [ $3 -ge $4 ]
    then
            echo "第三个参数大于第4"
    else
            echo "第三个参数小于第4"
    fi
    
    输出结果
    [root@localhost temp]# sh test.sh test do 3 90
    + args='test do 3 90'
    + echo '所有参数test do 3 90'
    所有参数test do 3 90
    + echo $'\345\217\202\346\225\2601=test'
    参数1=test
    + echo $'\345\217\202\346\225\2602=do'
    参数2=do
    + c=10
    + d=90
    + f=0
    + let 'f = c + d'
    + echo $'f\347\232\204\347\273\223\346\236\234\344\270\272100'
    f的结果为100
    + a=nihao
    + b=nihao
    + test nihao = nihao
    + echo $'\345\217\202\346\225\2601\344\270\272test'
    参数1为test
    + '[' '!do' -o do = do ']'
    + echo $'\345\217\202\346\225\2602\344\270\272do'
    参数2为do
    + [[ -n !do ]]
    + echo $'\347\254\254\344\272\214\346\254\241\345\217\202\346\225\2602\344\270\272do'
    第二次参数2为do
    + '[' 3 -ge 90 ']'
    + echo $'\347\254\254\344\270\211\344\270\252\345\217\202\346\225\260\345\260\217\344\272\216\347\254\2544'
    第三个参数小于第4
    
    • for循环写法
    #!/bin/bash
    array=(A B C e)
    i=0
    echo ${#array[*]}
    for vr in ${array[*]}
    do
      echo "第${i}个元素${vr}"
      i=`expr ${i} + 1`
    done
    输出结果:
    4
    第0个元素A
    第1个元素B
    第2个元素C
    第3个元素e
    

    注意,数据显示所用用${#array[*]}

    • while语法,环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。
    #!/bin/bash
    a=0
    while((${a}<3))
    do
       echo "第${a}次进入"
      ##表示+1
       let "a++"
    done
    
     结果
    第0次进入
    第1次进入
    第2次进入
    

    注,shell一样支持break跳出循环,continue跳过当前循环

    • case 写法,与if..else类似的条件判断
    case $变量名 in
    "值 1")
    ;;
    如果变量的值等于值1,则执行程序1,值
    2")
    如果变量的值等于值2,则执行程序2
    …省略其他分支…
    *)
    如果变量的值都不是以上的值,则执行此程序
    ;;
    esac
    
    • shell函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
    其定义和js相似,为function定义

    #!/bin/bash
    myFunction(){
      echo "第一个参数是$1"
    
    echo "第二个参数是$2"
    
    echo "第三个参数是$3"
    }
    
    myFunction 3 we
    
    输出结果
    第一个参数是3
    第二个参数是we
    第三个参数是
    

    shell的函数传递参数,直接在调用处后面跟参数就行,用空格隔开,

    方法内饮用,用$数字表示获取第几个参数

    相关文章

      网友评论

          本文标题:linux shell编程学习--四函五流

          本文链接:https://www.haomeiwen.com/subject/amwuhqtx.html