web-dev-qa-db-ja.com

変数と数値の合計をエコーするにはどうすればよいですか?

変数_x=7_があり、echo ($x+1)のようにプラス1をエコーし​​たいのですが、次のようになります。

bash:予期しないトークン `$ x + 1 'の近くの構文エラー

どうやってやるの?

11
Tom Brito

exprは必要ありません。POSIXシェルでは、算術評価に$(( ))を使用できます。

echo $((x+1))

§2.6.4 を参照してください

27
SiegeX

bcユーティリティを使用することもできます。

$ x=3;
$ echo "$x+5.5" | bc
8.5
3

二重括弧を試してください:

$ x=7; echo $(($x + 1))
8
3
miku

echo $(($ x + 1))を試してください

3以上のbashの一部のバージョンでのみ機能すると思います。

echo `expr $x + 1`

別の解決策になります

1
vmpstr

echo $((x + 1))もecho $(($ x + 1))と同じ結果です

0
tanangular

exprコマンドを使用するだけです。

$ expr $x + 1
8
0
chrisaycock

そのためにexprを使用します。

echo `expr $x + 1`
0
orlp

この方法を試してください:

echo $(( $X + 1 ))
0
Jason Plank
$ echo $(($x+1))
8

man bashから:

算術拡張

算術展開により、算術式の評価と結果の代入が可能になります。算術展開の形式は次のとおりです。

    $((expression))

式は二重引用符で囲まれているかのように扱われますが、括弧内の二重引用符は特別に扱われません。式内のすべてのトークンは、パラメーター展開、文字列展開、コマンド置換、および引用符の削除を受けます。算術置換はネストできます。

評価は、以下の算術評価のルールに従って実行されます。式が無効な場合、bashは失敗を示すメッセージを出力し、置換は発生しません。

0
DVK