Bash变量

  1. 变量的命名和赋值

     # name1=Vbird # 等号周围没有空格
     # name2=$name1 # name2内容为Vbird
     # name2="$name1" # name2内容为Vbird, 双引号可以引用变量内容
     # name2='$name1' # name2内容为$name1
     # name2="$name1"yes # name2内容为Vbirdyes
     # name3=`ls` # 使用重音符号``可调用命令的返回值, name3的内容位ls显示的东西
     # echo $name3 # 查看name3的内容, 注意$符号
     # echo $? # ?的值代表上一条命令的返回值, 如果上一条命令没有错误, 返回值通常为0
     # export name3 # 让name3变为环境变量, 可以在子进程中访问
     # export # 查看所有环境变量
     # env # 查看所有环境变量
     # set # 查看所有变量
    
  2. 读取变量, 数组, 声明
    • read -p "接提示字符" -t 等待输入最长时间 var_name: 将输入的字符传递给var_name
    • declare [-axir] variable: 将variable定义为不同的类型:

      • -a: 数组
      • -i: 整数
      • -x: 环境变量
      • -r: readonly
      # declare -i sum=100+200
      # echo $sum # 输出300
      
    • 数组
      • var[1]=aaa: 定义数组
      • echo ${var[1]}: 显示数组
  3. 匹配替换删除并输出
    • echo ${var##expr}: 从var开头匹配expr表达式, 并且删除匹配到的部分(var内容没有改变), 输出剩下的. 贪婪匹配.
    • echo ${var#expr}: 开头, 非贪婪匹配.
    • echo ${var%%expr}: 结尾, 贪婪匹配.
    • echo ${var%expr}: 结尾, 非贪婪匹配.
    • echo ${var//text/sub}: 在var中, 取代textsub, 匹配到的全部取代.
    • echo ${var/text/sub}: 仅取待第一个.
  4. 根据str的内容设置var
    • var=${str-newvar}: 如果str存在, var=$str, 如果不存在, var="newvar"
    • var=${str=newvar}: 如果str存在, 设置var=$str, 如果str不存在, 就设置str="newvar", var="newvar"
    • var=${str?novar}: 如果str存在, var=$str, 如果不存在, 报错novar
  5. history
    • history 3: 查看3条历史命令
    • history -c: 清除history
    • history -w: 保存history到histfiles
    • history -r: 从historyfiles读取history
    • !23: 执行history编号23的命令
    • !expr: 从history列表中的命令, 从下至上, 开头匹配expr, 直到第一个匹配成功, 执行这条命令
    • !!: 执行上一条命令