我试图同时使用printf
和export
(用于设置PS1
的变量),但我尝试过的一切都是在printf
中返回错误或将文字\u
放在提示符中。
v='\u\是否有一种方法可以格式化$v以使printf和export同时工作?; printf "$v"; export PS1="$v"
-bash: printf: missing unicode digit for \u
v='\\u\是否有一种方法可以格式化D6以使D7和D8同时工作?; printf "$v"; export PS1="$v"
\u$
v=是否有一种方法可以格式化D6以使D7和D8同时工作?\u'; v+='\是否有一种方法可以格式化D6以使D7和D8同时工作?; printf "${v}"; export PS1="${v}"
-bash: printf: missing unicode digit for \u
是否有一种方法可以格式化D6
以使D7
和D8
同时工作?
发布于 2018-03-10 15:42:33
这是失败的,因为printf
在其第一个参数中将一些反斜杠字母解释为特殊。
通常,当使用printf
时,您可以提供
这意味着printf
的第一个参数可以始终是一个单引号字符串。
在shell中,您可以只使用%s
作为格式化字符串中几乎任何内容的占位符,除非您希望像左/右填充(例如,%20s
使用20个字符表示右对齐字符串,%-20s
使用D11
表示左对齐字符串)、浮点数中一定数量的小数位(%.3f
表示三个小数位)或零填充整数(%08d
表示8位数字、零填充)等。
例如,要打印字符串,请在格式化字符串中使用%s
:
v='\u\或PS1='\u\这将输出PS1 will be set to "\u\$"和PS1 was set to "\u\$"请参阅系统上的printf(1)和/或printf(3) (man 1 printf和man 3 printf)。请注意,PS1也不需要导出。
printf 'PS1 will be set to "%s"\n' "$v" # or just: printf '%s\n' "$v"
PS1="$v"或A16这将输出A17和A18请参阅系统上的D19和/或D20 (D21和D22)。请注意,D23也不需要导出。
printf 'PS1 was set to "%s"\n' "$PS1" # or just: printf '%s\n' "$PS1"
这将输出
A17
和
A18
请参阅系统上的D19
和/或D20
(D21
和D22
)。
请注意,D23
也不需要导出。
printf 'PS1 will be set to "%s"\n' "$v" # or just: printf '%s\n' "$v" PS1="$v"
或
A16
这将输出
A17
和
A18
请参阅系统上的D19
和/或D20
(D21
和D22
)。
请注意,D23
也不需要导出。
https://unix.stackexchange.com/questions/429433
复制相似问题