这个确切的代码在另一个脚本中工作。我复制了这个功能,现在它保留了下来 给出未终止的'命令错误。
sed "
s@<%BRANCH-NAME%>@${_loc_name}@g
s@<%BRANCH-ADDR%>@${_loc_strt}@g
s@<%BRANCH-CTY%>@${_loc_city}@g
s@<%CUST-NAME%>@${_pat_name}@g
s@<%CUST-ADDR%>@${_pat_addr}@
s@<%CUST-CTY%>@${_pat_city}@
s@<%BARCODE%>@${_barcode}@g
s@<%DATE%>@${_date}@
s@<%TITLE%>@${_title}@
s@<%AUTHOR%>@${_auth}@
s@<%PRICE%>@${_price}@" "$_template"
响应对可能值的请求:
这些是巨大的文件,这个函数在for循环中。我用它来格式化邮件表格。更多信息:BASH: importing data from flat file into template
所以这个功能适用于某些目录,但我最近遇到了这个问题。
我在下面的kev的建议中抓住了斜线字符...除了'/'之外没有找到。或者 '沉默'换行。
find ./ -name "mail.TMP" -type f -exec grep -E '\n' {} \;
可能的值将是:
${pat_name}
Hermann Hesse c / o他的母亲
${loc_name}
Pandora SR home c / o Harmony City Hall
所以...也许这是一个引用问题?
答案 0 :(得分:1)
$ _loc_name=$'xxx\nyyy'
$ echo '<%BRANCH-NAME%>' | sed "s@<%BRANCH-NAME%>@${_loc_name}@g"
sed: -e expression #1, char 21: unterminated `s' command
$var
是否包含newline
?请echo
全部检查。
$ echo "$_loc_name"
xxx
yyy