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

标签 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

为什么有区别?我该如何解决它?

最佳答案

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

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

关于bash - 在 shell 和脚本中计算文件行数会产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6868774/

相关文章:

bash - 为什么我不能将 python 脚本的标准输出重定向到文件

linux - 隐藏 bash 函数内部

regex - 如何正则表达式比较破折号中的字符串?

bash - Git 命令在执行时有效,但在 cronjob 中无效

Linux: journalctl

python - 将文本文件中的单词添加到列表中(python 2.7)

php - 在 HTML 页面中回显多行(来自 MySQL 数据库)

c# - 在 C# 中实例化实现 .NET 接口(interface)的 IronPython 类型

authentication - 使用 AppCmd 设置特定的 IIS 7 站点?

apache - 配置 Apache 将 "GET/user/foo"路由到/user/GET.php 并将 "PUT/user/foo"路由到/user/PUT.php