首页 > 解决方案 > bash printf重复行

问题描述

我希望打印

$ pwd: /home/me/actual_folder size: 5.3M

和:

$ cat test.sh
printf 'pwd: %s size:%s\n' `pwd` `du -sh .`
$

但我得到:

$ sh test.sh
pwd: /tmp/actual_folder size:5.3M
pwd: . size:
$

如何避免最后pwd: . size:一行?

标签: bashprintf

解决方案


从 的输出中删除点du

printf 'pwd: %s size: %s\n' `pwd` `du -sh . | cut -f1`

否则,第二个命令替换输出两个单词,因此 printf 看到 3 个参数,因此它重复第二对的模板(点和空)。

您也可以直接使用 pwd 作为 du 的参数,但您需要反转输出的顺序:

printf 'pwd: %s size: %s\n' $(du -sh $(pwd) | awk '{print $2, $1}')

推荐阅读