コロンの後に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) ))