在 shell 脚本中,偶尔可以看到这样的做法:echo $xxx | awk/sed/grep/cut... 。看起来大张形势的样子,
其实不过是想修改一个变量的值。杀鸡何必用牛刀?bash内建的变量展开机制已经足以满足你各种需求
!还是老方法, read the f**k manaul! man bash 然后搜索Parameter Expansion,下面就是你想要的技巧。
键者也写过一篇相关的文章,希望能助上一臂之力:玩转Bash变量
5. 注意local
随着代码越写越多,你开始把重复的逻辑提炼成函数。有可能你会掉到bash的一个坑里。在bash,如果
不加 local 限定词,变量默认都是全局的。变量默认全局——这跟 js 和 lua 相似;但相较而言,很少有 ba
sh 教程一开始就告知你这个事实。在顶级作用域里,是否是全局变量并不重要。但是在函数里面,声明
一个全局变量可能会污染到其他作用域(尤其在你根本没有注意到这一点的情况下)。所以,对于在函数
内声明的变量,请务必记得加上 local 限定词。