gpt4 book ai didi

linux - 如何指定宽度参数的位置?

转载 作者:行者123 更新时间:2023-12-03 09:49:04 25 4
gpt4 key购买 nike

如果之前已经发布过,我们深表歉意。我到处搜索,找不到答案。

根据 man printf,“FORMAT 像在 C printf 中一样控制输出。”它指的是 printf(3)

根据man 3 printf,您可以在给定位置指定可变宽度。它说:

Instead of a decimal digit string one may write … "*m$" (for some decimal integer m) to specify that the precision is given in the m-th argument … which must be of type int.

这是我挣扎的部分。举一个简单的例子,假设我想打印一个宽度为 14 的字符串。

$ printf '[%14s]\n' Something
[ Something]

我可以改用变量:

$ WIDTH=14
$ printf '[%*s]\n' ${WIDTH} Something
[ Something]

当我想告诉 printf width 参数处于不同的位置时,棘手的部分就来了。为了简化此示例,我将其保留在原处,即位置 1。按照说明,我编写了以下内容。

内置版本:

$ printf '[%*1$s]\n' ${WIDTH} Something
bash: printf: `1': invalid format character

/usr/bin 中的版本:

$ /usr/bin/printf '[%*1$s]\n' ${WIDTH} Something
[/usr/bin/printf: %*1: invalid conversion specification

即使使用手册中的示例也会出错。

内置版本:

$ printf '%2$*1$d' 6 34
bash: printf: `$': invalid format character

/usr/bin 中的版本:

$ /usr/bin/printf '%2$*1$d' 6 34
/usr/bin/printf: %2$: invalid conversion specification

如您所见,我每次都会收到错误消息。我一直在努力寻找自己做错了什么,而且我根本无法在网上找到任何示例。

请问这应该如何格式化,还是手册有误?

  • 鲁本图 18.04
  • GNU bash,版本 4.4.20(1)-release (x86_64-pc-linux-gnu)
  • 内置 printf:未知版本
  • /usr/bin/printf printf (GNU coreutils) 8.28

谢谢

最佳答案

不,bash printf< 不支持来自 Single UNIX Specification 的 C printf 函数的扩展,以使用 $ 指定位置参数的位置 并且我怀疑任何 shell printf 实现都支持它。我认为原因是它需要开发人员的额外工作,而它很少使用扩展。

is the manual just wrong?

FORMAT controls the output as in C printf.

您正在阅读 GNU 版 printf 的文档,该文档取自令人惊叹的 Linux 手册页项目。我会说 C printf 已记录 in the C standard .

关于linux - 如何指定宽度参数的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61957858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com