Zsh下程序输出后出现诡异的百分号分析
问题
代码如下
1 |
|
输出
1 | 16% |
而当我修改输出语句为
1 | printf("%d\t",a); |
1 | 16 % |
添加\n
后输出正常
1 | printf("%d\n",a); |
1 | 16 |
但是我切换到Bash
却没有这个问题,一切按照预期输出
原因
只能说中文搜索引擎还是有点逆天,搜到的全是别人问怎么输出百分号。。
上谷歌搜了一下,找到 Stackoverflow 的一个问答
Getting a weird percent sign in printf output in terminal with C - Stack Overflow
其中有个回答指出
When (non-null) output from a program doesn’t include a trailing newline, zsh adds that color-inverted
%
to indicate that and moves to the next line before printing the prompt; it’s generally more convenient than bash’s behavior, just starting the command prompt where the output ended.
也就是没加\n
时,Zsh
会自动给你输出一个百分号然后换行。而bash
选择直接是不换行,接着输出。
Zsh下程序输出后出现诡异的百分号分析