二重括弧内の変数の拡張

二重括弧内の変数の拡張

私はbash 5.0.7を使用しており、角かっこ内の変数の合計を拡張できたらと思いますAnd="&&"Or="||"

$ [[ 1 > 0 $And 1 < 0 ]] 
bash: syntax error in conditional expression
bash: syntax error near `$And`
$ [[ 1 > 0 ${And} 1 < 0 ]] 
bash: syntax error in conditional expression
bash: syntax error near `${And}`

私のコードを大幅に簡素化する方法があったらと思います。また、どんな説明でも高く評価いたします。本当に気になりますsh/どのようにbash動作するのだろうか?よろしくお願いします。

ベストアンサー1

test組み込みの[and -a(for &&)と-o(for)で動作||します。

$ and_or=-a
$ [ 1 -gt 0 $and_or 1 -lt 0 ] && echo yes || echo nope
nope
$ test 1 -gt 0 $and_or 1 -lt 0 && echo yes || echo nope
nope
$ and_or=-o
$ [ 1 -gt 0 $and_or 1 -lt 0 ] && echo yes || echo nope
yes
$ test 1 -gt 0 $and_or 1 -lt 0 && echo yes || echo nope
yes

(Bash 3.2.57/4.4.12/5.0.3 でテスト済み)

コメントで指摘したように、事前>比較演算子の合計を算術バージョンの合計に置き換えました。<-gt-lt

しかし、これは本当のハッキングだと言いたいです...

おすすめ記事