Bash变量参数扩展完整文档
有一些鲜为人知的bash变量扩展:Bash变量参数扩展完整文档,bash,Bash,有一些鲜为人知的bash变量扩展: +----------------------------------------------------------+----------------+ | description | expression | +----------------------------------------------------------+----------------
+----------------------------------------------------------+----------------+
| description | expression |
+----------------------------------------------------------+----------------+
| Remove everything **after** the **last** '7' | ${var%7*} |
| Remove everything **after** the **first** '7' | ${var%%7*} |
| Remove everything **before** the **first** '7' | ${var#*7} |
| Remove everything **before** the **last** '7' | ${var##*7} |
| First char upper case | ${var^} |
| All upper case | ${var^^} |
| First char lower case | ${var,} |
| All lower case | ${var,,} |
| Show how variable was set | ${var@A} |
| ?? something cool ?? | ${var@E} |
| Print variable as though it were the prompt variable PS1 | ${var@P} |
| ?? something cool ?? | ${var@Q} |
+----------------------------------------------------------+----------------+
我一直在努力寻找记录所有这些技巧的来源。到目前为止,我找到的最好的是这张备忘单。但即使是这个页面也缺少一些扩展规则。为了编写好的bash代码,并使代码具有可移植性,我正在寻找以下几点:
bash变量扩展的所有技巧是什么?
哪里有一个文档可以用示例来展示所有这些文档?
bash的哪些版本可以使用哪些技巧?
关于参数展开的一些好的指针:
你错过了很多,比如
单次替换a->b:${x/a/b}
多重替换a->b:${x//a/b}
偏移量操作:${x:1:3}
${var word}如果定义了var,则使用var;否则,字
${var+word}如果定义了var,则使用word;否则什么都没有
${var=word}如果定义了var,则使用var;否则,请使用word并将word指定给var
${var?error}如果定义了var,则使用var;否则打印错误并退出
数组片${files[@]:-4}
请注意,大多数PE也使用数组一些关于参数扩展的好指针:
你错过了很多,比如
单次替换a->b:${x/a/b}
多重替换a->b:${x//a/b}
偏移量操作:${x:1:3}
${var word}如果定义了var,则使用var;否则,字
${var+word}如果定义了var,则使用word;否则什么都没有
${var=word}如果定义了var,则使用var;否则,请使用word并将word指定给var
${var?error}如果定义了var,则使用var;否则打印错误并退出
数组片${files[@]:-4}
请注意,大多数PE也使用arrayman bash文档所有这些文档,但文档中没有任何示例,并且是用真正的技术语言编写的。我的答案变成了“社区wiki”,因此它对growman bash文档开放所有这些,除了文档没有任何示例,而且是用真正的技术语言编写的。我的答案变成了“社区wiki”,所以它对Grow开放。我也喜欢高级Bash脚本,我也喜欢高级Bash脚本