在shell和脚本中计算文件行会产生不同的结果

时间:2011-07-29 04:49:59

标签: bash scripting lines

对于目录中的一堆文件,我想获得每个文件的行数,然后存储它 在一个变量和做其他的东西。通过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 个答案:

答案 0 :(得分:3)

我打赌你的默认shell不是bash而是其他东西。保留#!/bin/bash并将其替换为#!/bin/sh,让您的脚本使用默认shell。

当我尝试在Ubuntu上使用一些debian脚本时,我犯了另一个错误,其中#!/bin/sh的行为与我假设的#!/bin/bash不同。