我要求编写一个shell脚本来计算当前目录中所有".cpp"中的行数.
但是,在运行我的shell脚本时,它说count.sh: line 13: syntax error near unexpected token "done"
我不知道出了什么问题.
有谁能告诉我怎么能解决这个问题?谢谢你的帮助.
#!/bin/bash
summary=0
for i in $(find . -name *.cpp -print)
do
count=$(wc -l $i)
let summary+=count
if [$count -eq 1]
then
echo "$i : $count line"
elif [$count -gt 1]
echo "$i : $count lines"
done
if [$summary -eq 1]
then
echo "TOTAL: $summary line"
elif [$summary -gt 1]
echo "TOTAL: $summary lines"
Run Code Online (Sandbox Code Playgroud)
你fi之前错过了done.你必须if用a 结束语句fi,然后你必须done结束for循环.
示例:UPDATE以下示例并非使此脚本正确所需的全部内容.我把它留在这里,因为这是OP看到的"初始"错误的原因.继续阅读以获得更多修复.
for i in $(find . -name *.cpp -print)
do
count=$(wc -l $i)
let summary+=count
if [$count -eq 1]
then
echo "$i : $count line"
elif [$count -gt 1]
echo "$i : $count lines"
fi
done
Run Code Online (Sandbox Code Playgroud)
此外,它可能只是一个复制/粘贴错误,但在您的代码/脚本结束时,您完全错过了fi.
您的脚本中有一些错误.首先,这是正确的版本:
for i in $(find . -name *.cpp -print)
do
count=$(wc -l $i | cut -f1 -d' ')
let summary+=$count
if [ $count -eq 1 ];
then
echo "$i : $count line"
elif [ $count -gt 1 ];
then
echo "$i : $count lines"
fi
done
Run Code Online (Sandbox Code Playgroud)
修正:
wc -l就像12 ./filename,所以只使用行数,你必须提取它.我用于cut那个目的.let命令要求您实际添加文字值或变量.所以你需要使用$count而不仅仅是count,这只是字符串数,不能添加到其他东西.;在测试条件之后.elif带有a 的块then,就像if块本身一样.| 归档时间: |
|
| 查看次数: |
3442 次 |
| 最近记录: |