在linux中将输出行拆分为多行

时间:2015-05-08 11:03:19

标签: shell

我的代码是:

#!/bin/bash
dir="$1"

echo -n "file size:"
du="$(du $dir -hab | sort -n -r | tail -1)"
printf "%s\n" "echo "$du""

它显示输出为:

     file size:echo 0
./.config/enchant/en_US.dic 

我的预期输出是:

file size: 0
./.config/enchant/en_US.dic

应如上所示。路径应该在一个带有一个制表符空间的新行中。

1 个答案:

答案 0 :(得分:0)

看起来你应该使用这样的东西:

#!/bin/bash

dir=$1
printf 'file size: %s\n\t%s\n' $(du "$dir" -hab | sort -n -r | tail -1)

命令替换周围缺少引号意味着执行了分词。输出中的第一个单词输出在与“文件大小:”相同的行上,第二个单词打印在换行符上,跟随制表符。

我在命令替换中添加了$dir周围的引号,以防止分词和全局扩展的问题。作业周围的引号不是必需的(但它们没有任何伤害,所以如果你愿意,你可以留下它们。)