6

我正在编写一个脚本,以提高设置 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
4

2 回答 2

7

由于您特别提到了 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//\//\\\/}
于 2014-08-27T22:44:30.790 回答
3

问题是您的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
于 2012-10-19T00:48:59.633 回答