Syntax error: operand expected (error token is “+”) (i coudn't resolve this problem with the other thread)
我不能让这个简单的程序运行,代码看起来像这样,因为是为了一个课堂练习,我不会这样做,但我必须这样做,对不起,如果代码是一个混乱,但我已经尝试了很多事情,代码有点"变形"
1 2 3 4 5 6 7
| n= 0
for x in /home
do
e= du $x -B1 | cut d"" -f 1
$sum$(($sum+$e))
done
echo $sum |
- 所以…你想做什么?
- 将/home内容中的值逐个添加到sum值并在控制台中打印
- 在与do的线路后面加上echo $x,想知道for的用途是什么?您还可以添加echo $sum来了解错误。
- 考虑通过shellcheck.net运行您的代码,并在这里提问之前修复它发现的问题。
- 在关于循环遍历目录的副本中,请参阅stackoverflow.com/a/2108296/14122上ghostdog74的答案(但不要复制它们的未加引号的echo参数;这是错误的形式)。这里的一些bug也可以在bashpitfalls中找到;考虑一下它推荐的阅读。
在第1行,在"="和0之间有一个空格,但在赋值中"="之前或之后都不应该有空格。
在第4行,情况相同,但您也忽略了命令周围的反勾号"`",这表示bash要评估反勾号中的内容并返回该命令的输出。
第5行写着:
你的意思是:
更新:我还发现了三个问题:
在第2行中,将/home替换为/home/*,因为前者只在循环中使用/home,后者返回/home目录中的每个目录(和文件)。
你把d""传给cut,正确的选择是-d""。
另外,du输出的格式是制表符,而不是空格。如果删除cut中的-d"",它会起作用。
- 我已经应用了你说的所有东西,它不起作用,同样的错误。我不知道为什么不动手术。
- 请不要提背景。推荐的命令替换形式是$(...)。
- @mamg22请参阅stackoverflow.com/help/how-to-answer,特别是"回答问题得当"一节——不关注单一、狭窄、特定错误的问题应该关闭,而不是回答。
- 另外,-d""是完全有效的。尽管posix cut规范显示了在cut页上分隔的选项参数,但请参阅实用程序参数语法规范中2a的最后一句,注意选项参数并不严格要求该空间。
- 另请参阅如何使用shellcheck,如何调试bash脚本?(U&L.SE),如何调试bash脚本?(那么),如何调试bash脚本?(asku)、调试bash脚本等。