5

私はLinuxの世界ではまったく新しいので、Bashシェルを使用して少し練習しています。カウンターとして式を与えるループを実行するにはどうすればよいですか?たとえば、ファイル内の単語の量をループします。

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 に答える