Bash 计算shell和脚本中的文件行会得到不同的结果

Bash 计算shell和脚本中的文件行会得到不同的结果,bash,scripting,lines,Bash,Scripting,Lines,对于一个目录中的一组文件,我想获得每个文件的行数,将其存储 在变量中,执行其他操作。通过shell,如果我这样做,我可以毫无问题地完成它 read NLINES <<< $( cat file | wc -l ) 为什么不同?如何修复它?我打赌您的默认shell不是bash,而是其他东西。离开#/bin/bash并将其替换为#/bin/sh,让脚本使用默认shell 当我试图在Ubuntu上使用一些debian脚本时,我以另一种方式犯了这个错误,在Ubuntu上#/b

对于一个目录中的一组文件,我想获得每个文件的行数,将其存储 在变量中,执行其他操作。通过shell,如果我这样做,我可以毫无问题地完成它

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

为什么不同?如何修复它?

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

当我试图在Ubuntu上使用一些debian脚本时,我以另一种方式犯了这个错误,在Ubuntu上
#/bin/sh
的行为与我假设的
不同/bin/bash

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