[英]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.