[英]bash printf backslash then new line
我正在尝试将其从bash转换为ac header
#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" \
和海湾合作委员会开始抱怨多余的空间后, \\
如果没有空格,似乎\\\\
将被解释多次。
而不使用FORMAT="%-4s %-32s \\\\"
printf "$FORMAT" "id" "title\\n\"" >> $FILE
printf "\n" >> $FILE
...
有没有更好的方法来解决这个问题?
使用十六进制转义序列:
FORMAT="%-4s %-32s \x5C\n"
shell对双引号和单引号的处理不同。
不要在这里使用双引号:
FORMAT="%-4s %-32s \\n"
这样使用单引号,并避免转义:
FORMAT='%-4s %-32s \n'
或用于打印文字反斜杠和换行符:
FORMAT='%-4s %-32s \\\n'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.