Skocz do zawartości

Exper1977

Nowi użytkownicy
  • Zawartość

    1
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Zawartość dodana przez Exper1977

  1. Cześć Radek, w Twoim przypadku problem wynika z tego, że interaktywna komenda blokuje strumień, dopóki nie odpowiesz, więc standardowe grep czy awk nie zadziałają w czasie rzeczywistym. Są dwa główne podejścia do przechwycenia takiego pytania:expect – narzędzie do automatyzacji interaktywnych programów: #!/usr/bin/expect -f spawn dnf check-update <lista_pakietów> expect { "*[y/N]*" { exec kdialog --yesno "Czy kontynuować aktualizację?" send "y\r" } } interact spawn uruchamia komendę. expect czeka na pojawienie się wzorca [y/N]. send "y\r" wysyła odpowiedź „y” (Enter dodaje \r). interact pozwala dalej kontrolować terminal ręcznie, jeśli potrzeba. Automatyzacja przez flagi komendy, jeśli dostępne: Niektóre programy (w tym dnf) mają flagę nieinteraktywnego potwierdzania, np. -y: dnf check-update -y Wtedy terminal nie czeka na [y/N] i można analizować wynik od razu. Podsumowując: jeśli chcesz reagować na pojawiające się pytanie w czasie rzeczywistym, expect jest najbezpieczniejszym rozwiązaniem, bo standardowe potoki Bash nie przechwycą interaktywnych promptów w trakcie działania.
×
×
  • Dodaj nową pozycję...