我遇到算术语法错误的困难。
我正在从命令行读取文本文件的名称并计算每个文件的行数。
NUM=$(wc -l "$text")
然后我想检查 NUM 是否为奇数。
所以我说,
REMAINDER=$(( $NUM % 2 ))
if [ $REMAINDER -ne 0 ] ; then
echo "Odd number"
fi
然而,似乎有一个问题
REMAINDER=$(( $NUM % 2 ))
$NUM 似乎不被视为数字,而是一个“.txt”文件。当我单独检查 NUM 时,它工作得很好......
答案1
如果您打印$NUM
后
NUM=$(wc -l "$text")
你可能会在同一行看到(在 Linux 上)一个数字和一个文件名,其中有一些空格。
例如:
1842 basic.c
该字符串不是数字,您通常会只读取第一个标记以及您选择的 shell/sed/awk 等来使用那作为一个数字。
@steeldriver 建议这样获取数字:
NUM=$(wc -l < "$text")
可以运行(用 Debian 测试过)。