私は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
しかし、これは本当のハッキングだと言いたいです...