bash printf重复行

时间:2019-07-10 13:08:38

标签: 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:行?

2 个答案:

答案 0 :(得分:3)

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}')

答案 1 :(得分:1)

您可以使用:

printf "pwd: %s size:%s\n" "$(pwd)" "$(du -sh)"

但是,如果您不想使用“。”最后,您可以使用:

 printf "pwd: %s size:%s\n" "$(pwd)" "$(du -sh | cut -d '.' -f1)"