2012-01-11 10 views
1

この正確なコードは別のスクリプトで動作していました。私はこの関数をコピーしましたが、現在は に未終了の 's'コマンドエラーを与えています。可能な値の要求に応えてsed:bashスクリプトからunterminated sコマンド

sed " 
     [email protected]<%BRANCH-NAME%>@${_loc_name}@g 
     [email protected]<%BRANCH-ADDR%>@${_loc_strt}@g 
     [email protected]<%BRANCH-CTY%>@${_loc_city}@g 
     [email protected]<%CUST-NAME%>@${_pat_name}@g 
     [email protected]<%CUST-ADDR%>@${_pat_addr}@ 
     [email protected]<%CUST-CTY%>@${_pat_city}@ 
     [email protected]<%BARCODE%>@${_barcode}@g 
     [email protected]<%DATE%>@${_date}@ 
     [email protected]<%TITLE%>@${_title}@ 
     [email protected]<%AUTHOR%>@${_auth}@ 
     [email protected]<%PRICE%>@${_price}@" "$_template" 

これらは、巨大なファイルであり、この関数はforループです。私はそれを使って郵送用の書式を整えます。詳細情報はこちらBASH: importing data from flat file into template

この機能は特定のディレクトリで機能しましたが、この最近の機能ではうんざりです。

私は、以下のkevのアドバイスでスラッシュ文字を覆いました... '/'以外は見つかりませんでした。おそらく 「サイレント」改行。だから、

${pat_name} 

ヘルマン・ヘッセのC/O彼の母親

${loc_name} 

ハーモニー市役所OパンドラSRホームC/

find ./ -name "mail.TMP" -type f -exec grep -E '\n' {} \; 

可能な値は次のようなものだろう。 ..それは引用の問題かもしれませんか?

+0

あなたの '$ {_ loc_name}'、 '$ {_ loc_strt} 'などの変数に' @ '文字が含まれていますか? –

+0

私はそれを調べます。ありがとう – Bubnoff

+0

完全なエラーを貼り付けてくださいできますか? –

答えて

1
$ _loc_name=$'xxx\nyyy' 
$ echo '<%BRANCH-NAME%>' | sed "[email protected]<%BRANCH-NAME%>@${_loc_name}@g" 
sed: -e expression #1, char 21: unterminated `s' command 

いかなる$varnewlineが含まれていますか?確認するにはechoをすべて頼みます。

$ echo "$_loc_name" 
xxx 
yyy 
+0

私はそれが問題だと信じています...実際には名前フィールドなどですが。これらは大量のファイルです---道はありますか – Bubnoff

+0

私が言っていたように---これを引用する方法はありますか? – Bubnoff

+2

私は、変数から空白を取り除くことについて話している2つの記事を参照してください(あなたを助けるかもしれません):[記事1](http://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-変数)と[記事2](http://stackoverflow.com/questions/324167/remove-whitespace-from-bash-variable)を参照してください。これらの置換変数は、いくつかのファイルから読み込まれていますか?もしそうなら、記事1があなたが望むものかもしれません。 –

関連する問題