我是bash和脚本的新手,我正在尝试创建一个简单的脚本,但出于某种原因它不会让我运行它:
fileCount= ls -1 | wc -l
#echo $fileCount
for (( i=0; i<$fileCount; ++i )) ; do
echo item: $i
done
每当我尝试运行它时,它只会给我一条错误消息,说它期望一个操作数。 我真的很困惑这里的错误,任何帮助将不胜感激!
答案 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不是终端,则每行写一个文件)