BASH printf函数用于打印包含星号符号的变量

时间:2013-04-10 22:01:53

标签: bash printf

我正在尝试让printf函数打印出一行带有存储值的变量,其中一个变量可能包含一个星号符号。使用printf的原因是我可以遵循limits.conf文件中已有的格式样式,将每个变量固定在指定的空间量内。除了“*”之外,它可以正常工作。

printf "#"'%-15s %-7s %-15s %-8s\n' $domain $type $item $value >> ~/etc/security/limits.conf

举个例子说:     域= *     类型=硬     项目=核心     值= 100

执行此操作时,我奇怪地获取了limits.conf文件中所有目录的列表,即使域的值为“*”也不确定是否可以解决此问题。希望有人可以帮忙!提前致谢!

条目的外观示例:

#<domain>      <type>  <item>         <value>
#

#*               soft    core            0

1 个答案:

答案 0 :(得分:3)

以这种方式尝试:

printf "#"'%-15s %-7s %-15s %-8s\n' "$domain" "$type" "$item" "$value" >> ~/etc/security/limits.conf

这应该保护*免受文件名扩展的影响 - 这就是你所看到的。它还可以防止其他问题。