Bashの条件付き演算子と代入

Bashの条件付き演算子と代入

コロンの後にbashの条件演算子と代入演算子を使用できますか?

バッシュリファレンスマニュアル算術演算子については後述する。

  • 条件付き演算子expr ? expr : expr
  • 仕事= *= /= %= += -= <<= >>= &= ^= |=

まず、このコードは正しく機能しているようです。

a=1; ((a? b=1 : 2 )) #seems to work

ただし、後で代入演算子を使用すると、:「変数ではなく代入を試みました」というエラーが発生します。

a=1; ((a? b=1 : c=1)) #attempted assignment to non-variable error

なぜコロンの前には割り当て演算子のみを使用できますか?

ベストアンサー1

Bash は最後のコマンドを次のように解析します。

a=1; (( (a? b=1 : c)=1 ))

これにより、なぜ機能しないのかがわかります。代わりに、次を使用する必要があります。

a=1; (( a? b=1 : (c=1) ))

おすすめ記事