Jak dołączyć polecenie warunkowe do polecenia, które jest już uruchomione?

1

Powiedzmy, że mam trzy polecenia, które uruchamiam w ten sposób:

a && b && c

To uruchomi się b po zakończeniu i cpo bzakończeniu.

Co jeśli to zrobię:

a && b

Gdy to działa, chcę dołączyć c jako polecenie warunkowe. Czy da się to zrobić?

tony_sid
źródło
Czy to Linux czy MacOSX? W razie wątpliwości oznacz go używaną powłoką.
Bobby
Używam OSX, ale powinien być taki sam jak Linux.
tony_sid
Nie, MacOSX to Unix, a Linux to Linux. Dodatkowo istnieje mnóstwo różnych powłok dla systemu Linux, które mogą zapewniać różne rozwiązania.
Bobby
1
@Bobby Istnieją również różne powłoki w OSX, ale bez żadnych przeciwnych informacji, bashjest to dobre założenie.
Daniel Beck

Odpowiedzi:

2

Zrobiłbym to:

  • a && b
  • naciśnij, ctrl-Zaby zawiesić bieżący potok
  • bg 1 uruchomić go w tle
  • wait %1 && c

waitczeka na zakończenie określonego zadania i zwraca status wyniku, aby powyższe a && b && czachowało się tak , jak miałoby to miejsce.

Możesz także zdefiniować alias lub funkcję, np alias bgwait='bg 1 && wait %1'. Następnie po naciśnięciu ctrl-Zwystarczy wpisać bgwait && c. Obsługa wielu zadań pozostawia czytelnikowi ćwiczenie.

Gumilaka
źródło
0

Wynik ostatniej operacji jest przechowywany w $?. 0 oznacza brak błędów, wszystko inne stanowi problem.

Możesz np. Użyć tego w ten sposób

if [ $? -eq 0 ]; then c; fi

Zrób z niego funkcję lub podobną funkcję .bash_profilei możesz uruchomić ją nieco bardziej komfortowo.

Daniel Beck
źródło
Jak więc wpisać to polecenie, jeśli program już działa? Czy otworzę inny terminal?
tony_sid
@ OSXJedi po prostu go wpiszesz (zakładając, że aktualnie uruchomiony program nie ma danych wejściowych). Zostanie wykonany po zamknięciu programu, podobnie jak później, po wpisaniu, z tym wyjątkiem, że nie musisz czekać na bopuszczenie komputera.
Daniel Beck
-2

W systemie NT możesz wpisać nowe polecenie i nacisnąć klawisz ENTER, gdy bieżące polecenie jest uruchomione.

Na przykład

c: \ blah> reż / s

gdzie bla jest wystarczająco duże, abyś miał czas na pisanie, podczas gdy rzeczy przewijają się na ekranie.

teraz wszystkie te rzeczy przewijają się na ekranie

a gdy się pojawi, wpisz mem

następnie po zakończeniu katalog / s mem uruchomi się.

barlop
źródło
Pytanie dotyczyło poleceń warunkowych ( &&).
grawitacja
I nie chodziło również o Windows.
Bobby
Wytrzymać. Kiedy odpowiedziałem, wciąż nie powiedział, jaki system operacyjny. Więc wziąłem to za ogólne pytanie i odpowiedziałem, co zadziała w NT. I po drugie. jeśli się nad tym zastanowić, moja odpowiedź brzmi „komendy warunkowe”. To jest dokładnie to. Jeśli prowadzi A&B i chce, żeby działało tak, jakby zrobił A&B, ale nie umieścił tam A&C. On może zrobić tak, jak powiedziałem. I działa warunkowo w ten sam sposób. Czyż nie
barlop
2
mógł mieć na myśli warunek pod względem polecenia zwrócenia czegoś prawdziwego / fałszywego. ale w tym przypadku być może zobaczy, czy jest to prawda / fałsz, gdy jest uruchomione (czyli wtedy, gdy i tak planuje uruchomić polecenie), a potem zdecyduje, czy wykonać polecenie. Wydaje mi się, że miał na myśli tylko uruchamianie jednego polecenia po drugim.
barlop
@barlop: Ale tagi też tam były. Chociaż trochę mylące, ale z wyłączeniem systemu Windows.
Bobby