shell-传递参数、基本运算符、流程控制

作者: f75dfaf80e43 | 来源:发表于2017-10-28 18:36 被阅读13次

    传递参数

    1. 语法
      ./xxx.sh 参数a 参数b 参数c

    2. echo ${1} ${2} ${3}
    3. 特殊字符
      $# : 个数
      $* : 列表

    PS:${0} 是取得当前文件名

    基本运算符

    1. 算数运算符 注意转义字符
      "+"、"-"、"*" 、"/"、"="、"=="

      a=100  
      b=100
      c=`expr $a + $b`
      c=`expr $a - $b`
      c=`expr $a \* $b`
      c=`expr $a / $b`
      
      # "="
      a=8388 b=$a 
      echo $b
      
      #"=="
        if [[ $a == $b ]]; then
             echo "YES"
             else
                 echo "NO"
         fi
      
      
    2. 关系运算符

      -eq      =      true
      -ne      !=     true
      -gt      >      true
      -lt      <      true
      -ge      >=     true
      -le      <=     true
      
         if [[ $a -eq $b ]]; then
             echo "YES"
             else
                 echo "NO"
         fi
      
    3. 布尔值运算 :与、或、非
      "-a"、"-o"、"!"

       if [[ $a != $b ]]; then
       echo "YES"
       else
           echo "NO"
       fi
      
    4. 逻辑运算符
      "&&"、"||"

         a=100
         b=200
         if [ $a -lt 140 ] && [ $b -ge 200 ]
          then
          echo "YES"
          else
             echo "NO"
         fi
        OUT: YES
      
    5. 字符串运算 等、不等、长度为0、长度不为0、不为空、
      "="、"!="、"-z"、"-n"、"string"

      name="jianshu"
      if [ -n ${name} ]
      then
      echo "YES"
      else
      echo "NO"
      fi
        #PS: 发现 下面两个执行后的结果是一致的,无法理解
            if [ -n ${name} ]
            if [ ${name} ]
      
    6. 文件测试运算符: "-xxx file"
      -d: 是一个目录
      -r : 可读
      -w: 可写
      -x: 可执行文件
      -f: YES:普通文件 NO:特殊文件
      -s: 文件有内容
      -e: 文件有内容(包含目录和文件)

      file="/Users"
      if [ -x $file ]
      then
      echo "YES"
      else
      echo "NO"
      fi
      

    流程控制

    1. if、 if else、if-else-if-else

      a="1"
      b="2"
      if [ $a = $b ]
      then
      echo "=="
      elif [ $a ]
      then
      echo "a=nil"
      else
      echo "!="
      fi
      
    2. for

      #1.读取简单值
      for name in "1" "2" "3"
      do
      echo ${name}
      done
      #2.读取复杂值(特殊字符+转义)
      for name in "I don\`t Know"
      do
      echo ${name}
      done
      #3. 变量读取列表
      list="www . jian shu . com"
      for name in ${list}
      do
      echo ${name}
      done
      
        OUT:
        www
        .
        jian
        shu
        .
        com
      
      #4. 读取目录-> 通配符
      list="/Users/tanxk/*"
      for name in ${list}
      do
      echo ${name}
      done
      
      #5. 嵌套循环
      for ((a=1; a<5; a++))
      do
      echo ${a}
      done
      
      for ((a=1; a<5; a++))
      do
            echo ${a}
            for ((b=5; b<20; b++))
            do
                echo ${b}
            done
      done
      
    3. while

      a=1
      while(($a<10))
      do
      echo ${a}
      a=`expr $a + 1`  #整数运算:expr
      done
      
      while true #死循环
      do
      echo "Hello"
      done
      
    4. case

      number=${1}
      case $number in
      1) echo "1"
      ;;
      2) echo "2"
      ;;
      3) echo "3"
      ;;
      esac
      
    PS:OUT为输出的意思

    相关文章

      网友评论

        本文标题:shell-传递参数、基本运算符、流程控制

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