printf 格式字符串中的变量插值与替换
Posted
技术标签:
【中文标题】printf 格式字符串中的变量插值与替换【英文标题】:Variable Interpolation vs. Substitution in printf Format String 【发布时间】:2015-12-15 11:47:10 【问题描述】:如果您将变量放入printf(1)
格式字符串中,ShellCheck 会发出警告。为什么?
是:
printf "$file does not exist\n"
在某些方面低于:
printf "%s does not exist\n" "$file"
【问题讨论】:
SC2059 的 shellcheck wiki 条目(此处触发的警告)涵盖了这一点。 啊,不知道存在。谢谢。 【参考方案1】:因为理论上file
变量可能有一些格式字符会导致printf
失败。这些例子会更清楚:
file='my'
printf "$file does not exist\n"
my does not exist
file='m%y'
printf "$file does not exist\n"
-bash: printf: `y': invalid format character
根据建议它会正常工作:
printf "%s does not exist\n" "$file"
m%y does not exist
【讨论】:
以上是关于printf 格式字符串中的变量插值与替换的主要内容,如果未能解决你的问题,请参考以下文章