变量的使用
string=“This is a string”
path="~/user/bin"
num=5
需要注意的是,变量后的“=”号前后
不能有空格!
不能有空格!
不能有空格!
${var}
限定变量。
如果一个变量名A是另一个变量名AB的前部分,那么,如果要在AB相连时,要得到A的值,就必须使用${var}限定。
如果变量名不会产生歧义时(即独立的变量名),${var}与$var没有任何区别。
var="hello"
var_01="hello01"
echo $var $var_01 ${var}_01
输出: hello hello01 hello_01
${#var}
得到变量var的长度
var="hello"
echo ${#var}
输出: 5
${var#}
删除变量首部的字符(串),"#"后面的可以是字面串,也可以是正则表达式(惰性匹配)。
var="hello"
echo ${var#he}
输出: llo
var="/res_pos/path/from/something"
echo ${var#/}
输出: res_pos/path/from/something # 删除第一个"/"
echo ${var#/*/}
输出: path/from/something # 删除首部匹配"/*/"的串,即"/res_pos/"
${var##}
删除变量首部的字符(串),只是,当使用2个"##"时,匹配是贪婪的(贪婪匹配,也就是尽可能多的匹配)。
echo ${var##/*/}
输出: something # 删除首部匹配"/*/"的串,即"/res_pos/path/from/"。
${var%}
删除变量尾部的字符(串),"%"后面的可以是字面串,也可以是正则表达式(惰性匹配)。
var="hello"
echo ${var%llo}
输出: he
var="~/res_pos/path/from/something
echo ${var%/*}
输出: ~/res_pos/path/from # 删除尾部的"/something"
${var%%}
删除变量尾部的字符(串),只是,当使用2个"%%"时,匹配是贪婪的(对应于第4条)
var="~/res_pos/path/from/something"
echo ${var%/*}
输出: ~ # 删除第一个的"/"后的所有所有内容(包括"/"),贪婪匹配中,"/*"就是"/"后的所有字符串
参考文献:
[1] https://blog.csdn.net/lihonghai2392/article/details/77868445