数値変数の算術構文エラー

数値変数の算術構文エラー

算術構文エラーが原因で問題が発生しています。

コマンドラインからテキストファイル名を読み取り、各ファイルの行数を数えます。

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

文字列は数字ではありません。通常、最初のトークンと使用するシェル/sed/awkなどを読みます。それ数字で。

@steeldriverは次の番号を取得することを提案しました。

NUM=$(wc -l < "$text")

動作します(Debianでテスト)。

おすすめ記事