高级变量
1变量扩展
基本型${变量名称} {}也可以不使用,但是建议一般都加上;
变量存在的定义
变量值为空 null
变量值为非空
变量值不存在 (比如使用unset命令)
测试变量“存在与否”的基本用法
${待测变量-默认值}
有就传有,若没有,就传回一个指定值
1变量扩展
基本型${变量名称} {}也可以不使用,但是建议一般都加上;
变量存在的定义
变量值为空 null
变量值为非空
变量值不存在 (比如使用unset命令)
测试变量“存在与否”的基本用法
${待测变量-默认值}
有就传有,若没有,就传回一个指定值
测试变量“不存在”或其值为空:“传回”一个默认值
${待测变量:-默认值}
有就传有,若没有,就传回一个指定值 ###与上面一条区别:上面为空算有值,这里为空算没有值。
测试变量“不存在”或其值为空:给变量设一个默认值
${待测变量:=默认值}
${待测变量:-默认值}
有就传有,若没有,就传回一个指定值 ###与上面一条区别:上面为空算有值,这里为空算没有值。
测试变量“不存在”或其值为空:给变量设一个默认值
${待测变量:=默认值}
测试变量“不存在”或其值为空:提示错误信息
${待测变量:?提示信息}
${待测变量:?提示信息}
测试变量的“存在性”
${待测变量:+真值}
若变量存在且其值非空,则传回“真值”;若不然,传回空值
${待测变量:+真值}
若变量存在且其值非空,则传回“真值”;若不然,传回空值
总结上面的测试变量 目的 判断条件 符合的处置方式 不符合的处置方式
${待测变量:-默认值} 回传结果一定要有非空值 测试不存在或空值 传回默认值 传回变量值
${待测变量:=默认值} 给空值变量设一个默认值 测试不存在或空值 把变量值设为默认值 传回变量值
${待测变量:?提示信息} 检查条件是否完备 测试不存在或空值 显示变量名称:提示信息,停止执行 传回变量值
${待测变量:+真值} 判断某事是否为真 测试不存在或空值 传回默认值 传回空值
2变量扩展
取字符串切片
${变量:位置起点}
由指定位置开始,截取子字符串到字符串结束
${变量:位置起点:长度}
由指定位置开始,截取指定长度的子字符串
***IFS “默认是空格符” “TAB” “换行字符” 组成
取部分位置参数
${@:起点}
由起点开始,取得后面所有的位置参数
${@:起点:个数}
由起点开始,取得指定个数的位置参数
计算字符串长度
${#变量名称}
传回变量值的字符串长度
计算字符串长度,也可以使用外部程序expr
expr length “字符串”
expr “字符串” :'.*'
3变量扩展:对比样式
由字符串前面对比,删除相符者
由前面对比,删除最短
${变量#样式}
由前面对比,删除最长
${变量##样式}
由后面对比,删除最短
${变量%样式}
由后面对比,删除最长
${变量%样式}
取代或删除部分字符串
只替换第一个对比符合的字符串
${变量/样式/替换字符串}
替换全部对比符合的字符串
${变量//样式/替换字符串}
把对比符合的字符串删除
只删除一个
${变量/样式/}
删除全部
${变量//样式/}
4变量扩展:
2命令替换
${待测变量:-默认值} 回传结果一定要有非空值 测试不存在或空值 传回默认值 传回变量值
${待测变量:=默认值} 给空值变量设一个默认值 测试不存在或空值 把变量值设为默认值 传回变量值
${待测变量:?提示信息} 检查条件是否完备 测试不存在或空值 显示变量名称:提示信息,停止执行 传回变量值
${待测变量:+真值} 判断某事是否为真 测试不存在或空值 传回默认值 传回空值
2变量扩展
取字符串切片
${变量:位置起点}
由指定位置开始,截取子字符串到字符串结束
${变量:位置起点:长度}
由指定位置开始,截取指定长度的子字符串
***IFS “默认是空格符” “TAB” “换行字符” 组成
取部分位置参数
${@:起点}
由起点开始,取得后面所有的位置参数
${@:起点:个数}
由起点开始,取得指定个数的位置参数
计算字符串长度
${#变量名称}
传回变量值的字符串长度
计算字符串长度,也可以使用外部程序expr
expr length “字符串”
expr “字符串” :'.*'
3变量扩展:对比样式
由字符串前面对比,删除相符者
由前面对比,删除最短
${变量#样式}
由前面对比,删除最长
${变量##样式}
由后面对比,删除最短
${变量%样式}
由后面对比,删除最长
${变量%样式}
取代或删除部分字符串
只替换第一个对比符合的字符串
${变量/样式/替换字符串}
替换全部对比符合的字符串
${变量//样式/替换字符串}
把对比符合的字符串删除
只删除一个
${变量/样式/}
删除全部
${变量//样式/}
4变量扩展:
2命令替换
3算术扩展
转载于:https://blog.51cto.com/wangxiang2010/348044