首页 > 解决方案 > 如何使用 printf 打印多个变量

问题描述

我试图printf在一行上输出多个变量。

难以处理printf和接收意外结果的参数处理和格式。

代码片段

printf '%s %s %s' $infile $insize $indate 2>&1 | tee -a $logfile
find $infile -printf ' %p %s %CY-%Cm-%Cd %CH:%CM:%.2TS \n' 2>&1 | tee -a $logfile

意外结果
* 第一个文件大小未显示,日期和时间不正确 (printf)
* 第二个文件大小正确,日期和时间不正确 (find -printf)

ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp 2019-08-25 00:00:00 ./README.ftp 2037 2019-08-25 14:22:26

预期结果

ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp 2037 2015-08-12 15:47:26 ./README.ftp 2037 2019-08-24 20:32:53

远程文件

Last-Modified: Wed, 12 Aug 2015 15:47:26 GMT
Content-Length: 2037

本地文件

2037 Aug 13  2015 README.ftp

提前致谢。

标签: linuxbashshellgrep

解决方案


解决方案

printf '%s %d %s' "$infile" "$insize" "$indate" 2>&1 | tee -a "$logfile"
find "$infile" -printf ' %p %s %CY-%Cm-%Cd %CH:%CM:%.2TS \n' 2>&1 | tee -a "$logfile"

结果

ftp://ftp.ncbi.nlm.nih.gov/pub/README.ftp 2037 2015-08-12 15:47:26 ./README.ftp 2037 2019-08-24 20:32:53

man 1 printf参数处理的清晰和简单的解释。

用于格式摘要的 GNU 手册输出转换表


推荐阅读