我想使用printf
带有特定格式字符串的快捷命令,并想出了以下内容。
local PF="printf %s\n"
$PF "Some Text"
它可以完成这项工作,但想知道在使用这种方法时是否存在任何警告,这可能会导致对格式字符串的误解。
我想使用printf
带有特定格式字符串的快捷命令,并想出了以下内容。
local PF="printf %s\n"
$PF "Some Text"
它可以完成这项工作,但想知道在使用这种方法时是否存在任何警告,这可能会导致对格式字符串的误解。
当你可以只使用一个函数时,为什么要执行一个变量的值——这就是它们的用途。
或别名:
如果您真的想要涉及一个变量,请使用它来保存格式字符串。例如
如果您想将行长度保持在 80 个字符以下,则在两个或多个语句中分配变量。例如
如果您只想使分配格式字符串更具可读性,或者添加有关部分或全部部分的单独注释,这也很有用。
在
$PF
列表上下文中调用 split+glob。的内容$PF
根据涉及特殊参数的复杂规则进行拆分(例如,与解释代码$IFS
时发生的情况无关),然后生成的单词受文件名生成(又名路径名扩展,又名通配符)的影响。bash
printf %s\n
所以,这里至少有两个问题:
其行为
$PF
取决于 的当前值$IFS
。默认情况下, inbash
包含$IFS
空格、制表符和换行符,在这里您确实希望$PF
在空格处进行拆分,否则字符串不包含制表符或换行符。$IFS
但是在例如已更改为的上下文中%
,您最终将使用as 参数运行"printf "
命令。"s\n"
在某些版本的 bash(即 5.0,我相信它在 5.1 中被恢复)中,
\
是一个通配符运算符(至少像这里一样,它来自某些参数扩展,并且不用于引用)。使用
failglob
ornullglob
选项,这将意味着:即使没有这些选项:
请参阅@cas 的最佳答案以了解该怎么做。