gpt4 book ai didi

string - $d 在 printf 中做什么?

转载 作者:行者123 更新时间:2023-11-29 09:17:00 25 4
gpt4 key购买 nike

我不小心写了:

printf "here: %s $d\n" "${line:0:32}" "${#line}"

得到:

here: /home/gsamaras/Bash/libs/goodLib 
here: 103

为什么?

当然我是想说 %d,但我不明白我犯的错误中的这种行为。我可能希望它打印“这里:/home/gsamaras/Bash/libs/goodLib $d”,就像 do in C 一样...我找不到副本或其他东西,因此问题。

最佳答案

在字符串 "here: %s $d\n" 被传递给 printf 之前,参数扩展由 shell 执行。在这种情况下,$d 被扩展为一个空字符串。

如果您在字符串周围使用单引号,或者对 $ 进行反斜杠转义,那么您会在输出中看到 $d

因为您的字符串中只有一个格式说明符 (%s) 并且在格式字符串之后传递了两个参数,所以您最终得到两行输出:

The format is reused as necessary to consume all of the arguments.

(来自 printf 部分的 man bash)。

关于string - $d 在 printf 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764110/

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