Aşağıdaki boruya sahip olduğumu varsayın:
a | b | c | d
Nasıl tamamlanması için bekleyebilir c(veya b) 'de shya bash? Senaryo olduğunu bu araçlar dher zaman başlayabilir (ve yok değil bekledi gerekir) ama komple çıkışı gerektirir cdüzgün çalışması için.
Kullanım durumu olduğu difftooliçin gitbu görüntüleri karşılaştırır. Tarafından çağrılır gitve girdisini ( a | b | cparça) işlemek ve karşılaştırmanın sonuçlarını ( dparça) görüntülemek gerekir. Arayan ave için gereken girdiyi siler b. Bu, komut dosyasından dönmeden önce işlemin c(veya b) sonlandırılması gerektiği anlamına gelir . Öte yandan, bekleyemiyorum dçünkü bu, kullanıcı girdisini beklediğim anlamına geliyor.
Sonuçlarını cgeçici bir dosyaya yazabileceğimi veya belki bir FIFO kullanabileceğimi biliyorum bash. (Ancak FIFO'nun yardımcı olup olmayacağından emin değilim.) Bunu geçici dosyalar olmadan başarmak mümkün mü sh?
DÜZENLE
Belki de c(veya b) sürecin süreç kimliğini güvenilir bir şekilde bulabilmem yeterli olacaktır . Sonra tüm boru asenkron olarak başlatılabilir ve bir işlem kimliği bekleyebilirim. Çizgisinde bir şey
wait $(a | b | { c & [print PID of c] ; } | d)
DÜZENLEME ^ 2
Bir çözüm buldum, yorumlar (veya daha iyi çözümler) bekliyoruz.
distediği zaman başlamak ücretsizdir, ancak devam cetmeden önce bitirmem gerekiyor.
dzaman başlayabilirse, tam olarak ne bekliyorsunuz?
dkullanmazsa , boru hattının bir parçasını cyapmak mantıklı görünmüyor d. Ancak dgirdiyi kullanıyorsa, dyaklaşımınızın herhangi bir fark yaratması için hepsini okuduktan sonra girdisinde bir süre çalışmalıdır.
dmı başlatmak istiyorsunuz ? Her çıkış hattını geldiği gibi işlemeye başlamak istemiyor musunuz?ccd