当我使用shell字符串替换机制时,只有第一个匹配项被替换。
例如,如果我尝试用字符串中的子字符串@folder
替换子字符串mypod
:
hostname | grep @folder && cat /etc/hosts | grep @folder
我明白了
hostname | grep mypod && cat /etc/hosts | grep @folder
这是我尝试过的:
root@mypod:/# export var="hostname | grep @folder && cat /etc/hosts | grep @folder"
root@mypod:/# echo $var
hostname | grep @folder && cat /etc/hosts | grep @folder
root@mypod:/# var2=${var/@folder/mypod}
root@mypod:/# echo $var2
hostname | grep mypod && cat /etc/hosts | grep @folder
我想念什么?
预先感谢
答案 0 :(得分:3)
${var/@folder/mypod}
应该是${var//@folder/mypod}
如果您正在使用bash,here会提供有关变量扩展的指南,您可能会觉得有用。
答案 1 :(得分:0)
在bash手册页的 Parameter Expansion 部分中:模式与其值的最长匹配项被替换。它不会说“所有匹配项都已替换”