分享下bash参数与参数扩展的相关知识。
1,传递参数
2,获取参数的子集(子字符串)
x="hello world";
echo ${x:6:5} #输出world
3,获取变量值的长度
复制代码代码示例:
x="hello world";
echo ${#x} #输出11
4,模式匹配(可以使用通配符)
复制代码代码示例:
x="a1e b1e c2 d3 e4"
echo ${x#*1} #则将a1删除,输出为 e b1e c2 d3 e4 echo ${x##*1} #则删除a1e b1,输出为e c2 d3 e4
[2].从右开始删除
复制代码代码示例:
x="a1e b1e c2 d3 e4"
echo ${x%1*} #则删除1e c2 d3 e4,输出为a1e b echo ${x%%1*}#则删除1e b1e c2 d3 e4,输出为a
[3].替换字符
复制代码代码示例:
x="a1e b1e c2 d3 e4"
echo ${x/1/one} #输出aonee b1e c2 d3 e4 echo ${x//1/one}#输出为aonee bonee c2 d3 e4
5,设置默认值
复制代码代码示例:
a=${b:-Val1} #则变量$a的值为Val1而变量b还是没有设置
${变量名:+默认值} 若指定的变量值设置且不为空则shell扩展默认值并替换结果,但是指定的变量值没有改变。
b='val1'; a=${b:+val2} #则$a值为val2而$b值为val1
${变量名:=默认值} 若指定的变量为空或者没有设置,则shell扩展默认值并替换结果,且指定变量名的值也更改为默认值。
a=${b:=val1} #则$a为val1且$b为val1
${变量名:?默认值} 若指定的变量为空或者没有设置,则shell扩展默认值并将结果写入标准错误中。可用于判断变量b是否为空,若为空则错误输出指定的信息。
a=${b:?} #则shell中错误输出-bash: b: error
(责任编辑:IT) |