sehll编程-1

流过昼夜 提交于 2020-01-27 02:50:22

shell变量:

变量类型

  1. 环境变量(env可以输出所有的环境变量)
  2. 自定义变量
  3. 位置变量 eg: $1 $2 $3 $4 $4
  4. 预定义变量 eg: 0:0:脚本名 ,*:所有的参数,KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲:参数个数,?:上一个命令的返回值,返回0表示成功

变量赋值

  1. 显示赋值
    1. varName=varValue
    2. varName=“varValue”
    3. varName=data–(会将命令的值赋予变量,命令在子shell中执行)
    4. varName=$(data)–(会将命令的值赋予变量,命令在子shell中执行)
  2. read赋值
    1. read -p “prompt info” varName --会将键盘输入的值赋予varName

定义和引用变量时注意事项

  1. " " 弱引用 里面可以带有变量
  2. ’ ’ 强引用 里面带变量会把变量名当成字符串
  3. `` 命令替换符等价于$() 其内的命令会先被执行

变量运算

  1. 方法一expr:expr unmber1 + - * / number2 eg:num =expr 1+2
  2. 方法二(())(()):((unmber1 + - * / number2)) eg: $((1+2))
  3. 方法三$[] : $[number1 + - * / number2] eg : $[1+2]
  4. 方法四let:let number1 + - * / number2 eg :let unm=1+2;echo $nun

变量内容的删除和替换

eg: url=“www.baidu.com”

  1. 删除(并不会修改原变量的值)
    1. echo ${url} :变量的引用 www.baidu.com
    2. echo ${url#*.} :从左往右删除".",即非贪婪匹配 baidu.com
    3. echo ${url##*.}:从左往右删除到最后一个“.”,即贪婪匹配 com
    4. echo ${url%*.}:从右往左删除到第一个“.”,即非贪婪匹配 www.baidu—在version 4.4.20中不可用
    5. echo ${url%%*.}:从右往左删除到最后一个“.”,即贪婪匹配 www— 在version 4.4.20中不可
    6. echo ${#url}:计算字符串的长度 13
  2. 索引和切片(并不会修改原变量的值)
    1. ${url:0:7},返回索引是[0-7)的子字符串 www.bai
    2. ${url::7},可以缺省
  3. 内容替换(并不会修改原变量的值)
    1. ${url/w/s} 非贪婪匹配替换 sww.baidu.com
    2. ${url//w/s} 贪婪匹配替换 sss.baidu.com
  4. 变量的替代(可以用来给变量赋默认值)
    1. ${varName-newVarValue} :变量没有被赋值会使用新的变量值替代,有值(包含空值)则不会被替代
    2. ${varName:-newVarValue}:变量没有值(包含空值)将会被新的变量值替代,有值不会被替代

特殊符号

  1. ():()与` `:命令替换--(date) date,命令在子shell中执行
  2. (()):(()):数值的运算---((1+3))
  3. $[]:整数运算
  4. ():定义数组
  5. {}:集合
  6. ${}:变量的引用,变量内容的替换,替代和切片
  7. []:条件测试
  8. [[]]:条件测试,支持正则表达式
  9. (()):数值比较—((4>5))
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!