脚本错误

时间:2015-04-10 19:30:17

标签: bash shell unix scripting

我是bash和脚本的新手,我正在尝试创建一个简单的脚本,但出于某种原因它不会让我运行它:

fileCount= ls -1 | wc -l

#echo $fileCount

for (( i=0; i<$fileCount; ++i )) ; do
 echo item: $i
done

每当我尝试运行它时,它只会给我一条错误消息,说它期望一个操作数。 我真的很困惑这里的错误,任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

要以最小的更改运行代码,请替换:

fileCount= ls -1 | wc -l

使用:

fileCount=$(ls -1 | wc -l)

$(...)称为命令替换。当您想要在变量中捕获命令的输出时,可以使用它。

在等号的两边都没有空格是非常重要的。

改进

  • 要加快结果速度,请使用-U选项关闭排序。

  • 要防止尝试显示特殊字符,请使用-q

因此:

fileCount=$(ls -1Uq | wc -l)

最后,当ls写入终端以外的其他内容时,例如,在此命令中,管道中,每行打印一个文件名。这使得-1可选。

答案 1 :(得分:1)

您错过了将wc -l的输出分配给您的变量。试试这个:

fileCount=$(ls | wc -l)

(选项&#34; -1&#34;不需要,因为ls如果stdout不是终端,则每行写一个文件)