Bass içinde yanlışı alt kabuk olmadan çoklu komutlarla değerlendirme


1

Bash, mantıksal operatörleri değerlendirir ve & amp; her zaman önceliklidir. Yani örneğin:

false || echo 1 && echo 2
1
2

ve

true || echo 1 && echo 2
2

Tamam. Öyleyse çıktının böyle olmasını istiyorum diyelim:

false || (echo 1 && echo 2)

Ancak bir deniz kabuğu çağırmadan.

Aklıma gelen tek çözüm şudur:

false || if true; then echo 1; echo 2; fi
1
2

Alt-kabuk çağırmak zorunda kalmadan komutları birlikte gruplamak için C'deki parantezlere benzer daha temiz bir yol var mı?


Geçmişe bakıldığında, bu muhtemelen yığın akışında kaydedilmiş olmalıydı.
— Zhro

Hayır, burada sormak da sorun değil.
— slhck

Yanıtlar:


2
false || { echo 1 && echo 2; }

Bu doğru gibi görünüyor. Bunu yaptığımda hiçbir paralel işlem alt kabuğu oluşturulmadı: { sleep 0.2s; echo 1; } || { echo 1 && echo 2; }
— Zhro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.