【问题标题】:How do to wc command in if statement如何在if语句中使用wc命令
【发布时间】:2015-08-17 22:26:45
【问题描述】:

网上还有其他类似的问题,但在尝试了这些在线建议后,我无法弄清楚我的代码有什么问题。以下是我的代码:

LineNum = `wc -l <     /data/${INPUT:0:4}/${INPUT:4:2}/positions.$INPUT`
if [2 -le "$LineNum"] 
then
    echo ""
else
    awk 'NR!=1 {print $0}'     /data/${INPUT:0:4}/${INPUT:4:2}/positions.$INPUT | column -t
fi

所以 $INPUT 的格式是 YYYYMMDD,如果行数大于特定数字,我希望显示文件。但我不断收到 if 测试的错误消息“找不到命令”。

非常感谢任何建议!

【问题讨论】:

  • 不要在作业周围放置空格! (LineNum = `wc -l &lt; file` 是错误的;LineNum=$(wc -l &lt;file) 会更好(或使用反引号,但$(…) 比使用反引号更好)。
  • [ 是一个命令;这不是语法; shell 解析器根本没有对其进行特殊处理。正如你不用ls*.txt 来表示ls *.txt,你也不能用[2 来表示[ 2
  • 顺便说一句,shellcheck.net 会自动为您找到所有这些错误,而不需要人工参与。 :)
  • 乔纳森和查尔斯,非常感谢您的明确回答!我是新手,这些小事情真的让我发疯了
  • Charles 感谢网站,这对我有很大帮助!

标签: bash unix if-statement wc


【解决方案1】:

您的病情周围缺少空格。试试if [ 2 -le "$LineNum" ]

【讨论】:

  • 由于这是标记为 bash,因此也可以使用 if (( 2 &lt;= LineNum ))
猜你喜欢
  • 2014-08-04
  • 2016-05-27
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多