5

我是 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

不管用,

有什么建议吗?

4

1 回答 1

3

一个干净的方法是

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在每次迭代中被调用。

于 2012-07-06T09:14:24.033 回答