簡體   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