我正在尝试为学校编写一个Shell脚本,以在整个主目录中搜索所有扩展名为.java的文件。对于每个此类文件,请列出文件中的行数及其位置(即其完整路径)。
我的脚本看起来像
#!/bin/bash
total=0
for currfile in $(find ~ -name "*.java" -print)
do
total=$[total+($(wc -l $currfile| awk '{print $1}'))]
echo -n 'total=' $total
echo -e -n '\r'
done
echo 'total=' $total
当我从Konsole运行它时,出现错误
./fileQuest.sh: line 5: total+(): syntax error: operand expected (error token is ")")
我是新手,无法弄清楚错误告诉了我什么。任何帮助将不胜感激
答案 0 :(得分:2)
total+()
这是正在$[...]
内部求值的表达式。请注意,括号为空。那里应该有一个数字。它表明$(wc | awk)
位正在产生一个空字符串。
total=$[total+($(wc -l $currfile| awk '{print $1}'))]
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
如果该部分为空白,则会得到:
total=$[total+()]
请注意,wc
可以本地处理多个文件名。您不需要编写自己的循环。您可以改用find -exec
直接调用它。
find ~ -name "*.java" -exec wc {} +