2011-07-29 35 views
2

對於目錄中的一堆文件,我想獲取每個文件的行數,將其存儲在一個變量中並執行其他操作。通過shell我能做到這一點沒有問題,如果我做在shell和腳本中計算文件行給出了不同的結果

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

我敢打賭,你的默認shell不是bash,而是別的。保留#!/bin/bash並將其替換爲#!/bin/sh,以讓您的腳本使用默認shell。

我以另一種方式犯了這個錯誤,當我嘗試在Ubuntu上使用一些debian腳本時,其中#!/bin/sh的行爲與我假設的#!/bin/bash有所不同。

+0

是的,就是這樣! – flow

相關問題