shell变量:
变量类型
- 环境变量(env可以输出所有的环境变量)
- 自定义变量
- 位置变量 eg: $1 $2 $3 $4 $4
- 预定义变量 eg: *:所有的参数,KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲:参数个数,?:上一个命令的返回值,返回0表示成功
变量赋值
- 显示赋值
- varName=varValue
- varName=“varValue”
- varName=
data–(会将命令的值赋予变量,命令在子shell中执行) - varName=$(data)–(会将命令的值赋予变量,命令在子shell中执行)
- read赋值
1. read -p “prompt info” varName --会将键盘输入的值赋予varName
定义和引用变量时注意事项
- " " 弱引用 里面可以带有变量
- ’ ’ 强引用 里面带变量会把变量名当成字符串
- `` 命令替换符等价于$() 其内的命令会先被执行
变量运算
- 方法一expr:expr unmber1 + - * / number2 eg:num =
expr 1+2 - 方法二((unmber1 + - * / number2)) eg: $((1+2))
- 方法三$[] : $[number1 + - * / number2] eg : $[1+2]
- 方法四let:let number1 + - * / number2 eg :let unm=1+2;echo $nun
变量内容的删除和替换
eg: url=“www.baidu.com”
- 删除(并不会修改原变量的值)
- echo ${url} :变量的引用 www.baidu.com
- echo ${url#*.} :从左往右删除".",即非贪婪匹配 baidu.com
- echo ${url##*.}:从左往右删除到最后一个“.”,即贪婪匹配 com
- echo ${url%*.}:从右往左删除到第一个“.”,即非贪婪匹配 www.baidu—在version 4.4.20中不可用
- echo ${url%%*.}:从右往左删除到最后一个“.”,即贪婪匹配 www— 在version 4.4.20中不可
- echo ${#url}:计算字符串的长度 13
- 索引和切片(并不会修改原变量的值)
- ${url:0:7},返回索引是[0-7)的子字符串 www.bai
- ${url::7},可以缺省
- 内容替换(并不会修改原变量的值)
- ${url/w/s} 非贪婪匹配替换 sww.baidu.com
- ${url//w/s} 贪婪匹配替换 sss.baidu.com
- 变量的替代(可以用来给变量赋默认值)
- ${varName-newVarValue} :变量没有被赋值会使用新的变量值替代,有值(包含空值)则不会被替代
- ${varName:-newVarValue}:变量没有值(包含空值)将会被新的变量值替代,有值不会被替代
特殊符号
- (date)
date,命令在子shell中执行 - ((1+3))
- $[]:整数运算
- ():定义数组
- {}:集合
- ${}:变量的引用,变量内容的替换,替代和切片
- []:条件测试
- [[]]:条件测试,支持正则表达式
- (()):数值比较—((4>5))
来源:CSDN
作者:yelrivcom
链接:https://blog.csdn.net/qq_41569935/article/details/103747248