繁体   English   中英

sed和转义bash变量的冒险旅程

[英]sed and the odyssey of escaping a bash variable

DEST_PATH='/var/www/clones'
site='xyz.com'

sed -i -e "s/\$log_path\s=\s'\(.*\)'/\$log_path = '$DEST_PATH\/$site\/logs'/" $DEST_PATH/$site/configuration.php

问题是第一个变量中的正斜杠,因为这是正在处理并返回错误:

sed -i -e "s/\$log_path\s=\s'\(.*\)'/\$log_path = '/var/www/clones\/xyz.com\/logs'/"  configuration.php

这实际上是应该运行的时间:

sed -i -e "s/\$log_path\s=\s'\(.*\)'/\$log_path = '\/var\/www\/clones\/xyz.com\/logs'/"  configuration.php

所以我知道,我可以替换$DEST_PATH内的所有/并再次运行sed ,但是我想知道您是否知道或可以想到任何其他/更好的方法。 理想情况下,如果可能的话, sed可能会自动转义'$DEST_PATH/$site/logs'

您是否正在使用足够现代的sed版本(例如GNU sed )? 这样就不需要使用/来分隔模式和替换。 任何角色都可以。

例如,您可以使用

s,pattern,substitution,

代替

s/pattern/substitution/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM