数字变量的算术语法错误

数字变量的算术语法错误

我遇到算术语法错误的困难。

我正在从命令行读取文本文件的名称并计算每个文件的行数。

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 测试过)。

相关内容