2016-05-20 1 views
2

「のテキストに続いて、\を期待するコマンドは、」私のスクリプトです:セッド・エラーここ

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null | 
sed 's/ECHO: \"\[LC\] //' | 
sed 's/"$//' | 
sed '$a;' >./2d_$1 

出力こと:

sed: 1: "$a;": command a expects \ followed by text 
+0

あなたは 'すべてで何かを得ようとしてsed'する方法を、'は/ dev/null'なのでへのあなたの出力をリダイレクトしていますか? '' sed ''とは何ですか? – miken32

+0

@ miken32: 'openscad'からのエラーは' sed'に行きます。 'sed'の標準出力は'/dev/null'になります。 –

+0

@JonathanLefflerは '2>&1/dev/null 'を意味しません。stderrがstdoutに行くと、nullになりますか? – miken32

答えて

2

sedのバージョンは、あなたが使用しているものができたGNU sedされていません。あなたは記述する必要があります。

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null | 
sed 's/ECHO: \"\[LC\] //' | 
sed 's/"$//' | 
sed '$a\ 
;' >./2d_$1 

また、sedの3つのコピーが(礼儀正しくするために)少し過剰です。 1で十分:

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null | 
sed -e 's/ECHO: \"\[LC\] //' \ 
    -e 's/"$//' \ 
    -e '$a\' \ 
    -e ';' >./2d_$1 

か:

openscad $1 -D generate=1 -o $1.csg 2>&1 >/dev/null | 
sed -e 's/ECHO: \"\[LC\] //' -e 's/"$//' -e '$a\' -e ';' >./2d_$1