3

これをbashからacヘッダーに作成しようとしています

#define XXXXX \

 "id title\n" \ 

 "1  developer\n" \

the script is 

FORMAT="  \"%-4s  %-32s\\\n"

printf "$FORMAT" "id" "title\\n\"" >> $FILE

printf "$FORMAT" "1" "Developer\\n\"" >> $FILE

結果は

"id    title\n"                        \n  "1     Developer\n"                              \n

私が変わるとき FORMAT="%-4s %-32s \\ \n"

私は得る

"id    title\n"                           \ 
"1     Developer\n"                       \ 

そしてgccは、後に余分なスペースを訴え始めます\

\\スペースがない場合、 は複数回解釈されるようです。

使うことなく FORMAT="%-4s %-32s \\"

printf "$FORMAT" "id" "title\\n\"" >> $FILE

printf "\n" >> $FILE
...

これを処理するより良い方法はありますか?

4

2 に答える 2

0

シェルは、二重引用符と単一引用符を異なる方法で扱います。

ここでは二重引用符を使用しないでください。

FORMAT="%-4s %-32s \\n"

次のように一重引用符を使用し、エスケープを避けます。

FORMAT='%-4s %-32s \n'

または、リテラルのバックスラッシュと改行を印刷する場合:

FORMAT='%-4s %-32s \\\n'
于 2013-08-07T21:18:37.083 に答える