
更新时间: 2017年1月12日08:42:09提交: 雏菊
printf命令模仿C库中的printf()库例程. 它复制了该功能的几乎所有功能. 但是,shell级别的版本存在一些差异. 以下文章将为您提供有关shell中printf命令格式的输出语句的信息. 有需要的朋友可以参考一下.
简介
The
printf命令用于格式化输出,它是echo命令的增强版本. 它是C printf()库函数的一个有限变体printf输出字符串不加换行符,语法上略有不同.

注意: printf由POSIX标准定义printf输出字符串不加换行符,比echo更具移植性.
类似于echo命令,printf命令还可以输出简单的字符串:
$printf "Hello, Shell\n" Hello, Shell $
printf不会像echo那样自动换行,必须显式添加换行符(\ n).
printf命令的语法:

printf格式字符串[参数...]
format-string是格式控制字符串,而arguments是参数列表.
以多行格式输出数组信息
# A=(1 2 3) && echo ${A[@]}
1 2 3
如何输出为:

1 2 3
# A=(1 2 3) && printf "%s\n" ${A[@]}
1
2
3
跟踪多个进程
strace是所有Linux程序员都应该精通的工具. 此命令可以strace -p $ pid1 -p $ pid2跟踪一个或多个正在运行的进程,跟踪一个进程很好;当我们要跟踪httpd时在所有进程中,我们都可以从pidof httpd中获取所有pid,但是我们不能直接使用它们. 我们需要在每个pid之前添加-p,这可以通过while循环完成,如下所示:
strace $(pidof httpd | while read pid; do echo -n " -p $pid " ; done)
时间不长,但是有更简单的方法:

strace $(pidof httpd | xargs printf ' -p %s ')
如果我们已将pid信息存储在$ pids中,那么我们可以:
printf ' -p %s ' $pids
pids=$(pidof httpd); strace $(printf ' -p %s ' $pids)
注意: printf参数中的-p最好不要将其写在头部(但是使用xargs时不存在此问题)
摘要
以上是本文的全部内容. 我希望本文的内容可以为每个人的学习或工作带来帮助. 如有任何疑问,您可以留言进行交流.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-155132-1.html
敌动