Ada*_*dam 7 bash newlines printf
$ printf "hi"
hi$ printf "hi\n"
hi
$ printf "hi\\n"
hi
Run Code Online (Sandbox Code Playgroud)
为什么最后一行不打印hi\n?
Jde*_*eBP 32
这printf与您所提供的论点printf无关,而与此无关。
在双引号字符串,外壳变成\\成\。因此,您提供的参数printf实际上是hi\n,printf然后当然会对其进行自己的转义序列处理。
在双引号字符串中,\shell执行的转义仅限于影响 ␊ \、`、$、 和"字符。你会发现它\n被传递给了printf原样。因此,您所提出的论点printf实际上hi\n 又是。
将转义序列放入格式字符串时要小心printf。 在Single Unix Specification 中只有一些定义了含义。 例如,已定义,但实际上并非如此。\n\c
Kus*_*nda 15
在双引号内,\\n是一个转义(引用)反斜杠后跟一个n. 这是考虑到printf作为\n和printf将输出一个换行符。
在双引号(仍然)中,\n是字符串\n. 同样,printf接收一个\n字符串并打印一个换行符。
在双引号,反斜杠是特殊仅在前一个反斜杠,换行,或任何时候$,`或"。“特殊”的意思是去掉下一个字符的特殊含义。如果反斜杠位于任何其他字符之前(n例如),那么它只是一个反斜杠字符。
这在POSIX 标准中有解释。
要\n以printf格式字符串打印,请使用printf '\\n'或printf "\\\\n",或使用printf '%s' '\n'
通常,printf格式字符串应该用单引号引起来,并且任何变量数据都应该作为要插入到格式字符串中的附加参数给出:
printf 'This is how you write a newline: %s\n' '\n'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3957 次 |
| 最近记录: |