您好,我需要替换字符串,但我使用字符串“return false;”收到错误
#!bin/bash
oldstring='{alert("bash")}'
newstring='{return false;}'
grep -rl $oldstring /home/commons.bundle.js | xargs sed -i s/$oldstring/$newstring/g
错误:sh deleteBoo.sh sed:espressione -e #1,carattere 25:comando `s' 非终止符
答案1
grep -rlZF -- "$oldstring" /home/commons.bundle.js |
xargs -r0 sed -i "s/$oldstring/$newstring/g" --
以下的小改动应该可以使其正常工作:
- grep 应该使用
-F
,以便 grep 不会将传递的字符串评估为正则表达式。 - 另一个使用的 grep 选项是
-Z
使用空分隔符将文件名传递到 xargs。 - 在接收端, xargs with
-0
现在将安全地解压文件名。根据“法律”,文件名中不能出现空值