2011-07-29 42 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

相关问题