首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当字符串有反斜杠时使用printf

当字符串有反斜杠时使用printf
EN

Unix & Linux用户
提问于 2018-03-10 15:25:53
回答 1查看 867关注 0票数 1

我试图同时使用printfexport (用于设置PS1的变量),但我尝试过的一切都是在printf中返回错误或将文字\u放在提示符中。

代码语言:javascript
运行
复制
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以使D7D8同时工作?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-03-10 15:42:33

这是失败的,因为printf在其第一个参数中将一些反斜杠字母解释为特殊。

通常,当使用printf时,您可以提供

  1. 静态格式字符串,可能包含应从其他参数获取的数据占位符,以及
  2. 在静态格式字符串中的占位符中使用的其他变量数据。

这意味着printf的第一个参数可以始终是一个单引号字符串。

在shell中,您可以只使用%s作为格式化字符串中几乎任何内容的占位符,除非您希望像左/右填充(例如,%20s使用20个字符表示右对齐字符串,%-20s使用D11表示左对齐字符串)、浮点数中一定数量的小数位(%.3f表示三个小数位)或零填充整数(%08d表示8位数字、零填充)等。

例如,要打印字符串,请在格式化字符串中使用%s

代码语言:javascript
运行
复制
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 (D21D22)。

请注意,D23也不需要导出。

printf 'PS1 will be set to "%s"\n' "$v" # or just: printf '%s\n' "$v" PS1="$v"

A16

这将输出

A17

A18

请参阅系统上的D19和/或D20 (D21D22)。

请注意,D23也不需要导出。

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/429433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档