sed 在终端中输出正确的文件,但新文件中未发生任何替换

sed 在终端中输出正确的文件,但新文件中未发生任何替换

当我从命令行运行下面的 shell 脚本时,它将复制的文件输出到屏幕,我可以看到替换已正确进行,但是在它创建的新文件中,它仍然显示原始文件的原始文件内容。 html - 我将方面保存到新文件时做错了什么?

# other relevant vars above #
cp original.html MobileApp/www/index.html

sed  -E'' "s#MOBILE_APP_API_URL#\"$mobile_app_api_url\"#g;
    s#MOBILE_APP_MEDIA_URL#\"$mobile_app_media_url\"#g;
    s#MOBILE_APP_ENVIRONMENT#\"$environment\"#g" MobileApp/www/index.html

// 请注意,如果我在行的开头使用 sed -i ,这将按预期工作,但出于可移植性的原因,我不想使用 -i 参数。

答案1

在这种情况下,我会选择

sed -E -e "s#MOBILE_APP_API_URL#\"$mobile_app_api_url\"#g" \
       -e "s#MOBILE_APP_MEDIA_URL#\"$mobile_app_media_url\"#g" \
       -e "s#MOBILE_APP_ENVIRONMENT#\"$environment\"#g" \
       original.html >MobileApp/www/index.html

-E标志不接受参数,并且通过多个-e部分,我们可以将命令行分成可读的块。

我们可以完全跳过,cp因为我们处理源文件并使用重定向直接写入目标文件。

相关内容