printf 在 zsh 中添加神秘的尾随 % 字符

Mic*_*rst 2 printf zsh

我想*在 zsh 中打印重复的字符。这个答案有一个解决方案,适用于bash

printf '*%.0s' {1..50}
Run Code Online (Sandbox Code Playgroud)

但是,当我在 中运行它时zsh,我得到以下输出:

**************************************************%
Run Code Online (Sandbox Code Playgroud)

尾随%标志颜色反转的地方。这对我来说很神秘,我想知道为什么会发生这种情况,我该如何避免?

mel*_*ene 5

这不是一个角色,这是缺乏一个角色。

如果输出的最后一行未终止(即不以换行符结束\n),则 zsh 显示反向视频%符号。请参阅http://zsh.sourceforge.net/Doc/Release/Options.html#Prompting

解决方法是只输出一个终止的换行符:

printf '*%.0s' {1..50}; echo
Run Code Online (Sandbox Code Playgroud)