我正在尝试让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
答案 0 :(得分:3)
以这种方式尝试:
printf "#"'%-15s %-7s %-15s %-8s\n' "$domain" "$type" "$item" "$value" >> ~/etc/security/limits.conf
这应该保护*免受文件名扩展的影响 - 这就是你所看到的。它还可以防止其他问题。