我无法让这个简单的程序正常工作,代码看起来像这样,因为对于一次课堂练习,我不会那样做,但是我不得不这样做,对不起,如果代码混乱,但是我尝试了很多事情,代码有点“变形”
n= 0
for x in /home
do
e= du $x -B1 | cut d" " -f 1
$sum$(($sum+$e))
done
echo $sum
答案 0 :(得分:1)
在第1行中,“ =”和0之间有一个空格,但是在赋值中,“ =”之前或之后都不应有空格。
第4行的情况相同,但是您还错过了命令周围的反引号'`',这表明bash会评估反引号内的内容并返回该命令的输出。
第5行显示:
$sum$(($sum+$e))
所以你的意思是:
sum=$(($sum+$e))
更新:我发现了另外三个问题:
在第2行中,将/home
替换为/home/*
,因为前者仅在循环中使用/ home,而后者则返回/ home目录中的每个目录(和文件)。
您要将d" "
传递给cut
,正确的选项是-d " "
。
此外,du
输出的格式是制表符,而不是空格。如果您删除-d " "
中的cut
,它将起作用。