bash变量之高级部分

1.变量扩展

     ${变量名称}                     变量扩展                          例如:${filename}

     $(命令)                            命令替换                          例如:$(ls /)

     $((算术式))                       算式扩展                          例如:$((9+9))

变量扩展:一种简易的条件判断,对不同的条件赋予变量不同的替换值,是一种隐含的“if-then-else”的程序语法

 

判断变量存在与否的基本语法:${待测变量-默认值}

                                  口诀:有就传存在的,没有,就传入默认值

                存在与否或者为空:${待测变量-:默认值}

                                  口诀:有就传存在的,没有或者空,就传入默认值

                存在与否或者为空:${待测变量:=默认值}

                                  口诀:给不存在或者为空的变量,设定默认值

存在与否或者为空,输出提示信息:${待测变量:?提示信息}

                                  目的:在脚本中,为了检测变量为空或者不存在,输出提示信息,以防止脚本出现严重问题

                测试变量的存在性:${待测变量:+真值}

                                  目的:测试变量存在,存在而且有值,即是真

 

整理图片请查看附件

 

变量为字符串时,切片取子串的用法:

大致有两种:1.${变量:位置起点} 2.${变量:位置起点:长度}

 

取传入字符串的长度:${#变量名称} 此方法的扩展应用:${#数组[@]}或者${#数组[*]}均为取数组元素的个数

 

样式对比应用:${变量#样式}  从最左边开始,对比变量值,删除“最短相符合字符串”

                     ${变量##样式} ...                                         “最长相符合字符串”

                     ${变量%样式}  从最右边开始,对比变量值,删除“最短相符合字符串”

                     ${变量%%样式}....                                         “最长相符合字符串”

 

取代或删除部分字符串

                    ${变量/样式/替换字符串}:只替换第一个对比符合的字符串

                    ${变量//样式/替换字符串}:替换所有符合的字符串

                    ${变量/样式}:删除第一个符合的字符串

                    ${变量//样式}:删除所有符合的字符串