Linux命令全解(11)


  • 基本语法
    • "$((运算式))"或"$[运算式]"或者expr m + n//expression 表达式
    • 注意expr运算符间要有空格 , 如果希望将expr的结果赋给某个变量 , 使用``
    • expr m - n
    • expr \*,/,%乘 , 除 , 取模
  • 实例
    • 计算(2+3)*4的值
      vim operator.sh#!bin/bash#第一种方式:RES1=$(((2+3)*4))echo "res1=$RES1"#第二种方式RES2=$[(2+3)*4]echo "res2=$RES2"#推荐使用#第三种方式TEMP=`expr 2 + 3`#注意要用空格 , 否则输出结果为 2+3RES3=`expr $TEMP \* 4`echo "temp=$TEMP"echo "res3=$RES3"
    • 求出命令行的两个参数[整数]的和 20 50
      SUM=$[$1+$2]echo "sum=$SUM"然后再命令行输入./operator.sh 20 50--输出结果 sum=70
  • 条件判断
    • 基本语法
      if [ condition ] (注意condition前后要有空格)非空返回true , 可使用$?验证(0为true , >1为false)
    • 示例
      [ abc ]--返回true[] --返回false[ condition ] && echo ok || echo notok条件满足执行后边的语句
    • 判断语句
      • 常用判断条件
        1)= 字符串比较 , 判断两个字符串是否相等2)两个整数的比较-lt 小于-le 小于等于-eq 等于-gt 大于-ge 大于等于-ne 不等于3)按照文件权限划分-r 有读的权限-w 有写的权限-x 有执行的权限4)按照文件类型划分-f 文件存在并且是一个常规文件-e 文件存在-d 文件存在并是一个目录
      • 应用实例
        vim ifdemo.sh#!bin/bash#案例1:判断"ok"是否等于"ok"if [ "ok" = "ok" ]thenecho "equal"fi#案例2:23是否大于等于22if [ 23 -ge 22 ]thenecho "大于"fi#案例3:/root/shcode/aaa.txt 判断目录中的文件是否存在if [ -f /root/shcode/aaa.txt ]thenecho "存在"fi
  • 流程控制
    多分支语句
    案例:如果输入的参数大于60 , 则输出及格了 , 否则输出不及格
    #!/bin/bashif [ $1 -ge 60 ]thenecho "及格了"elif [ $1 -lt 60 ]thenecho "不及格"case语句
    #!/bin/bashcase $1 in"1")echo "周一";;"2")echo "周二";;"3")echo "周三";;*)echo "Other..";;esacfor语句
    vim testFor1.sh#!/bin/bash#基本语法1<< commentfor 变量 in 值1 值2 值3...do程序主代码donecomment#案例1:打印命令行输入的参数for i in "$*"#$*把所有的参数看成一个整体doecho "num is $i"#这里只会输出一句话donefor j in "$@"#$@把每个参数区分对待doecho "num is $j"done#基本语法2for ((初始值;循环控制条件;变量变化))do主程序代码done#案例2:从1到100的值累加显示SUM=0for ((i=1; i<=100; i++))doSUM=$[$SUM+$I]doneecho "sum=$SUM"while语句
    while [ 条件判断式 ]
    do
    ?程序
    done
    vim testWhile.sh#!/bin/bash#案例1:从命令行输入一个参数n , 统计1+2+..+nSUM=0i=0while [ $i -le $1 ]doSUM=$[$SUM+$i]# i自增i=$[$i+1]doneecho "结果=$SUM"
  • read获取控制台输入
    read(选项)(参数)选项:-p:指定读取值时的提示符-t:指定读取值时等待的时间(秒) , 如果没有在指定时间内输入 , 就不再等待了参数:变量:指定读取值的变量名#实例:testRead.sh#案例1:读取控制台输入一个num值#!/bin/bashread -P "请输入一个数num=" NUM1echo "你输入的num=$NUM1"#案例2:读取控制台输入一个num值 , 在10秒内输入read -t 10 -P "请输入一个数num=" NUM2echo "你输入的num=$NUM2"
  • 函数