我想使用纯Bash(没有awk,perl或sed)从字符串中替换所有子串。
这一行:
string=${string/$oldValue/$newValue}
仅替换第一个$oldValue
外观。
这就是我用以下方式做到的原因:
while [[ $string == *"$oldValue"* ]]; do
string=${string/$oldValue/$newValue}
done
但我不喜欢这个"丑陋" (=效率低下)方法。
有更好的方法吗? (可能是第一行代码的通用形式)
答案 0 :(得分:4)
尝试类似:
export str="Hello World Hello"
export oldValue="Hello"
export newValue="Hi"
echo ${str//$oldValue/$newValue}
Hi World Hi
答案 1 :(得分:3)
添加额外的/
以$oldValue
替换所有$newValue
:
string="${string//$oldValue/$newValue}"