加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash,比较一个命令的输出

发布时间:2020-12-15 22:08:12 所属栏目:安全 来源:网络整理
导读:我想做这样的事情: if [ $(wc -l $f) -lt 2 ] 其中$f是一个文件.当我运行它时,我收到错误消息: [: too many arguments 有人知道如何在我的命令中修复这一行吗? 完整的脚本是: for f in *.csvdo if [ $(wc -l $f) -lt 2 ] then echo $f fidone 解决方法
我想做这样的事情:

if [ $(wc -l $f) -lt 2 ]

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

[: too many arguments

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

完整的脚本是:

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

解决方法

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

if [ $(wc -l $f) -lt 2 ]

if [ $(wc -l $f | cut -f1 -d' ') -lt 2 ]

要么

if [ $(wc -l < $f) -lt 2 ]

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读