我正在尝试将bash创建为c头
#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
...
有没有更好的方法来处理这个问题?
答案 0 :(得分:1)
使用十六进制转义序列:
FORMAT="%-4s %-32s \x5C\n"
答案 1 :(得分:0)
shell以不同的方式处理双引号和单引号。
Don在这里使用双引号:
FORMAT="%-4s %-32s \\n"
使用这样的单引号并避免转义:
FORMAT='%-4s %-32s \n'
OR用于打印文字反斜杠和换行符:
FORMAT='%-4s %-32s \\\n'