我的代码是:
#!/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
应如上所示。路径应该在一个带有一个制表符空间的新行中。
答案 0 :(得分:0)
看起来你应该使用这样的东西:
#!/bin/bash
dir=$1
printf 'file size: %s\n\t%s\n' $(du "$dir" -hab | sort -n -r | tail -1)
命令替换周围缺少引号意味着执行了分词。输出中的第一个单词输出在与“文件大小:”相同的行上,第二个单词打印在换行符上,跟随制表符。
我在命令替换中添加了$dir
周围的引号,以防止分词和全局扩展的问题。作业周围的引号不是必需的(但它们没有任何伤害,所以如果你愿意,你可以留下它们。)