我想为printf使用一个具有特定格式字符串的快捷命令,并提出以下内容。
local PF="printf %s\n"
$PF "Some Text"它做了这项工作,但不知道在使用这种方法时是否存在任何警告,这可能导致对格式字符串的错误解释。
发布于 2021-11-26 04:19:50
发布于 2021-11-26 08:34:38
列表上下文中的$PF正在调用split+glob。$PF的内容根据涉及$IFS特殊参数的复杂规则拆分(例如,这些参数与bash解释printf %s\n代码时发生的情况无关),然后产生的单词将受到文件名生成(又名扩展,又名全局)的限制。
因此,这里至少有两个问题:
$PF的行为取决于$IFS的当前值。默认情况下,在bash中,$IFS包含空格、制表符和换行符,在这里您确实希望在空间上拆分$PF,否则字符串不包含制表符或换行符。但是,例如,在将$IFS更改为%的上下文中,您将以"s\n"作为参数来运行"printf "命令。\是一个全局运算符(至少像这里一样,它来自于某些参数展开,而不是用于引用)。在打开failglob或nullglob选项时,这意味着:$ PF='printf %s\n‘bash-5.0 -O failglob -c '$PF test’bash-5.0:不匹配:%s\n $ PF='printf %x\n‘bash\n’bash-5.0 -O nullglob -c '$PF测试%d‘test0,即使没有这些选项:$ PF='printf %\n’bash-5.0 -c '$PF test‘test $sn$ PF='printf %PF=’printf%‘bash-5.0 -c '$PF测试’testn有关要做什么,请参阅@cas的好答案。
https://unix.stackexchange.com/questions/679131
复制相似问题