2011-07-29 8 views
2

ディレクトリ内のファイルの束について、それぞれの行数を取得するには、変数に を格納し、追加の処理を行います。シェルを経由して、私はシェルとスクリプトのファイル行数を計算すると異なる結果が得られます

read NLINES <<< $(cat file | wc -l) 

を行う場合、私は問題もなくそれを行うことができますが、私は、スクリプト内で行う場合

#!/bin/bash 
for i in `ls *.dat ` 
do 
    read NLINES <<< $(cat $i | wc -l) 
done 

は私が

Syntax error: redirection unexpected 

なぜ違いを取得しますか?どうすれば修正できますか?

+1

['ls'出力を解析しない](http://mywiki.wooledge.org/ParsingLs) – l0b0

答えて

3

あなたのデフォルトのシェルはbashではないが、何か他のものがあります。 #!/bin/bashのままにして、#!/bin/shに置き換えて、スクリプトがデフォルトのシェルを使用できるようにします。

私はUbuntuでいくつかのデービッドスクリプトを使用しようとしたときにこのエラーを作りました。ここで#!/bin/shは私の想定した#!/bin/bashと違った動作をしました。

+0

ええ、そうでした! – flow

関連する問題