![](/img/trans.png)
[英]How to pass sed command with spaces in expression to Bash function through $@
[英]How to pass an argument with spaces to sed command?
我的shell腳本中有以下功能
fnChangeTxt()
{
sed -i 's/<div id="'$1'"><p>*.*</<div id="'$1'"><p>'$2'</' /var/www/html/alarm.html
}
我想在下面使用通過$ 2參數將字符串傳遞給sed命令。
fnChangeTxt 'demo' 'This text to sed'
但是,這無法正常工作並產生錯誤,我認為這是由於空格所致,因為以下命令可以正常工作。
fnChangeTxt 'demo' 'This_text_to_sed'
有沒有辦法用空格做到這一點?
提前致謝。
將參數( $1
等)括在雙引號中,以防止它們被單詞分割(並防止其他可能不愉快的額外解析):
sed -i "s/<div id=\"$1\"><p>*.*</<div id=\"$1\"><p>$2</" /var/www/html/alarm.html
嘗試使用轉義字符:
fnChangeTxt 'demo' 'This\ text\ to\ sed'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.