bash,比较一个命令的输出

use*_*171 4 bash comparison arguments

我想做这样的事情:

  if [ $(wc -l $f) -lt 2 ]
Run Code Online (Sandbox Code Playgroud)

其中$ f是一个文件.当我运行它时,我收到错误消息:

  [: too many arguments
Run Code Online (Sandbox Code Playgroud)

有人知道如何在我的命令中修复这一行吗?

完整的脚本是:

for f in *.csv
do
  if [ $(wc -l $f) -lt 2 ]
      then
      echo $f
      fi
done
Run Code Online (Sandbox Code Playgroud)

dwa*_*ter 8

至少在我的情况下wc -l filename,输出32 filename是32行数.所以你必须在行数后删除文件名.你可以改变你的代码

if [ $(wc -l $f) -lt 2 ]
Run Code Online (Sandbox Code Playgroud)

if [ $(wc -l $f | cut -f1 -d' ') -lt 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

if [ $(wc -l < $f) -lt 2 ]
Run Code Online (Sandbox Code Playgroud)

如果没有解决您的问题,请将输出添加wc -l filename到您的问题或作为评论.