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