Linux shell字符串替换多次出现

时间:2020-09-21 10:40:31

标签: linux string bash shell

当我使用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

我想念什么?

预先感谢

2 个答案:

答案 0 :(得分:3)

${var/@folder/mypod}应该是${var//@folder/mypod}

如果您正在使用bash,here会提供有关变量扩展的指南,您可能会觉得有用。

答案 1 :(得分:0)

在bash手册页的 Parameter Expansion 部分中:模式与其值的最长匹配项被替换。它不会说“所有匹配项都已替换”