shell程序设计(六)算术扩展和参数扩展

Bash ginotang 660℃ 0评论

算术扩展

算术扩展用于处理一些简单的算术运算命令,算术扩展的操作符是$(()), 使用的是两个括号。

算术扩展主要是用来替换速度较慢的expr命令。

例如:

另一个操作符也可以用于算数运算,就是$[]。例如:

不过,两个操作符都不支持浮点运算,因此,100/45等于2

参数扩展

最简单的参数扩展形式是:

参数扩展最常见的问题是在处理文件名的时候,假设有文件名local(保存在orgname变量中),现在要命令为localconf,使用下面的命令:

本来的意思是在变量orgname后面添加conf,但是shell把整个orgnameconf解析为一个变量,而该变量是没有定义的,即它是一个null值,因此mv命名运行出错。

解决办法是使用${}符号。

其他常见的参数扩展

  • ${param:-default}   如果变量param不存在或值为空,则把它设置为default的值
  • ${#param}                变量param的长度
  • ${param%word}     从变量param的尾部开始删除与word匹配的最小部分,然后返回剩余部分
  • ${param%%word} 从变量param的尾部开始删除与word匹配的最长部分,然后返回剩余部分
  • ${param#word}    从变量param的头部开始删除与word匹配的最小部分,然后返回剩余部分
  • ${param##word} 从变量param的头部开始删除与word匹配的最长部分,然后返回剩余部分
  • ${param/word/newword}  把param中第一个找到的word值替换为newword
  • ${param//word/newword} 把param中找到的所有word值替换为newword

例子:

需要注意的是:无论param是未定义还是一个空字符串,${param:-default}都会把该变量替换为default设置的值。

而${param-default},注意中间没有冒号(:), 这种语法只有param是未定义的时候它才会使用default的值替换,如果param是一个空字符串,则保留param的值不变

例如:

 

转载请注明:Pure nonsense » shell程序设计(六)算术扩展和参数扩展

喜欢 (0)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x