shell编程基础

shell编程基础

SHELL编程初步

1. 基础知识

  • 算术运算

    +,-,*,/,%,**

    • let Var=expression
    • Var=$[expression]
    • Var=$((expression))
    • Var=$(expr argu1 argu2)
    • 有时候乘法符号需要转移才行
  • 增强型赋值

    变量做某种算术运行后回存到此变量中

    • let i=$i+#
    • let i+=#
    • 另外也支持 +=,-=,*=,/=,%=
  • 用户交互

    • 命令 read [option] name 读取用户输出并保存到变量中,常用于像用户确认操作

    • 参数 -p '提示' -t '超时时长'

    • 示例

      #!/bin/bash
      echo -ne "\033[1;31;1m是否继续?[Y/N] \033[0m"
      read Reply
      if ! echo ${Reply} |/bin/grep -Ei "^y$|^yes$"  >/dev/null 2>&1 ;then
          exit 1
      fi
      
  • 特殊变量

    • $0 脚本文件本身路径
    • $# 脚本参数的个数
    • $* 所有参数
    • $@ 所有参数

2. 条件测试

判断某需求是否满足,需要由测试机制来实现

  • 常用的测试表达式种类

    • 执行命令 利用返回值
    • 测试表达式 test EXPRESSION 或 [ EXPRESSION ] 或 [[ EXPRESSION ]] 注意 EXPRESSION 两端必须有空白字符
  • 数值测试

    • -eq 等于
    • -ne 不等于
    • -gt 大于
    • -ge 大于等于
    • -lt 小于
    • -le 小于等于
  • 字符串测试

    • ==
    • >
    • <
    • !=
    • =~ 左侧字符串是否能够被右侧模式匹配
    • -z "String"
    • -n "String"
    • 字符串需要加引用
    • 要使用 [[ EXPRESSION ]] 才行
  • 文件测试

    • -a or -e 存在性测试
    • -类型 类型测试 如 -b File 测试是否为块设备文件
  • 组合条件测试

  • 第一种方式 逻辑运算,如下

    • CMD1 && CMD2
    • CMD1 || CMD2
    • ! CMD 或 ! EXPRESSION
    • [ -O File ] && [ -r FILE ]
  • 第二种方式 -a(and) 或 -o(or),如下

    • EXPRESSION1 -a EXPRESSION2
    • EXPRESSION1 -o EXPRESSION2
    • [ -O FILE -a -x FILE ]

3. 选择执行

  • &&,||

  • if 语句

    if 条件;then
      业务逻辑
    elif 条件1;then
      业务逻辑
    else
      业务逻辑
    fi
    
  • case语句

    case $var in
    	'test1')
    	echo "变量值为test1"
    	;;
    	'test2')
    	echo "变量值为test2"
    	;;
    	*)
    	echo "以上都没通过"
    esac
    

4. 循环执行

  • for循环

    for VAR in LIST;do
        业务逻辑
    done
    

    LIST 生成方式

    • 直接给出 user1 user2 user3 空格隔开
    • 整数列表 a , seq[start [incremtal]] last
    • 返回列表的命令 如ls
    • glob
    • 变量引用 $*
  • while循环

    while 条件
    do
       业务逻辑
    done
    
  • until循环

    # 与while相反,条件为false执行
    until 条件
    do 
       业务逻辑
    done