我正在制作一个脚本,以便更有效地设置Statamic网站。我遇到的问题是我用来替换文件中的字符串的变量具有未转义的正斜杠并且是用户输入。如何确保_site_url: http://statamic.com
成为_site_url: http://example.com
?
只要没有正斜杠,下面的代码就会起作用。
echo "What's your site URL? Don't forget the protocol (ex. http://)!"
read -e SITE_URL
echo "%s/_site_url: http:\/\/statamic.com/_site_url: $SITE_URL/g
w
q
" | ex _config/settings.yaml
答案 0 :(得分:4)
由于您特意提到bash而不是Bourne shell或通用Unix shell,我建议使用Bash的内置搜索/替换功能:
echo "What's your site URL? Don't forget the protocol (ex. http://)!"
read -e SITE_URL
echo Escaped URL: ${SITE_URL//\//\\\/}
答案 1 :(得分:2)
问题是ex
命令中的分隔符。我们可以放任何我们想要的东西,我在这里使用@
:
尝试这样做:
sed -i "s@_site_url: http://statamic.com/_site_url: $SITE_URL@g" _config/settings.yaml
或使用ex
命令:
echo "What's your site URL? Don't forget the protocol (ex. http://)!"
read -e SITE_URL
echo "%s@_site_url: http://statamic.com@_site_url: $SITE_URL@g
w
q
" | ex _config/settings.yaml