如何在bash中使用表达式作为循环计数器?

时间:2012-07-06 07:36:06

标签: bash loops

我在Linux世界中是全新的,我使用Bash shell并练习一点。 我如何执行循环给出一个表达式? 例如,循环遍历文件中的单词量。

for n in(wc -w text.txt)
 do
   echo "word number $n"
 done

不幸的是上面的脚本无法正常工作。 到目前为止我找到的唯一方法是首先打印wc -w text.txt的值,然后将其分配给变量然后循环:

wc -w text.txt
a=10   //result saw by wc -w text.txt
for((b=0; b<a; b++))
do
echo "$b"
done

问题是我需要检索wc -c的值并将其直接赋值给变量,以防我必须编写一个自动运行的脚本,问题是

a= wc -w test.txt

无效,

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

干净的方法是

tmp=$(wc -w <text.txt)
for ((i=0; i<$tmp; i++))
do 
    echo $i; 
done

<text.txt部分是必要的,因为通常wc命令的输出是

wordcount1  INPUTFILE1
wordcount2  INPUTFILE2
...

i的最大值必须等于文件的字数,因此您必须在循环按预期工作之前取消INPUTFILE1部分。使用输入流<而不是文件名可以解决这个问题。

使用临时变量可防止在每次迭代时调用wc