行4:5+:構文エラー:オペランドが必要です(「+」とマークされたエラー)。

行4:5+:構文エラー:オペランドが必要です(「+」とマークされたエラー)。

Ubuntu(53-Ubuntu x86_64 x86_64 x86_64 GNU / Linux)で以下にリストされているbashスクリプトの実行中に、タイトル行に記載されているエラーが見つかりました。

#!/bin/bash

read x y
echo $(($x + $y))

しかし、RedhatとCentOSでも完全に動作します。

なぜこれが起こるのか教えてください。すべてのオペレーティングシステムにはbashバージョン4.3.11(1)リリースがあります。

答え1

2つではなく1つの入力番号しか提供していないため、エラーが発生します。この場合、readはこの数値を変数に代入しますxy空のままになるので、次の行は次のようになりますecho $(($x + ))。演算子に+2つのオペランドが必要であることを知っていますが、ここでy(2番目のオペランド)が欠落しているため、エラーが発生しますoperand expected (error token is “+ ”)

関連情報