2013-04-10 115 views
0

我试图让printf函数打印出一行带有存储值的变量,其中一个可能包含星号符号。使用printf的原因是,我可以遵循limits.conf文件中的格式样式,将每个变量固定在指定的空间量中。它可以很好地处理除“*”之外的任何内容。BASH printf函数打印包含星号符号的变量

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

可以说,例如: 域= * 类型=硬 项目=核心 值= 100

做这件事时,我奇怪地让我的所有目录列表中的limits.conf文件,即使域的值是“*”对于解决此问题的方法根本不确定。希望有人能帮助!提前致谢!

入境的外观的一个例子:

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

#*    soft core   0 

回答

3

试试这样说:

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

这应该保护*从文件名扩展 - 这是你所看到的。它也可以防止其他问题。