Chandani Patel Asked: 2018-06-02 00:27:30 +0800 CST2018-06-02 00:27:30 +0800 CST 2018-06-02 00:27:30 +0800 CST sed 不能使用变量替换文件中的文本 772 我想替换目录中所有 js 文件的字符串 export name="test_user" && echo $customerName && sed -i -- 's/this.NAME=""/this.NAME=\"'$name'\"/g' *.js 如果我不使用空间,它可以正常工作,但上面的字符串命令失败 linux sed 1 个回答 Voted Best Answer Kusalananda 2018-06-02T00:31:45+08:002018-06-02T00:31:45+08:00 's/this\.NAME=""/this.NAME="'"$name"'"/g' 分解成几个部分: 's/this\.NAME=""/this.NAME="' "$name",这是重要的一点:必须引用变量扩展。 '"/g' 此外,如果您\"在替换中使用,并且它在单引号中,那么您将在结果中插入\",而不是"。 您似乎还使用了一个名为customerName. 我假设这是一个错字。 我不知道您正在使用的是否sed可以按照您想要的方式进行就地编辑。 有关的: 为什么我的 shell 脚本会因空格或其他特殊字符而窒息? 什么时候需要双引号?
分解成几个部分:
's/this\.NAME=""/this.NAME="'
"$name"
,这是重要的一点:必须引用变量扩展。'"/g'
此外,如果您
\"
在替换中使用,并且它在单引号中,那么您将在结果中插入\"
,而不是"
。您似乎还使用了一个名为
customerName
. 我假设这是一个错字。我不知道您正在使用的是否
sed
可以按照您想要的方式进行就地编辑。有关的: