Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: [cmd] wiele komend w jednej linii... przypadek szczególny  (Przeczytany 11162 razy)

bazz

  • Gość
Hej,
mam pewien problem:

Gdy chcemy w linii komend wykonać kilka komend naraz oddzielamy je średnikiem albo &&, np.:

cmd1;cmd2;cmd3

Przypuśćmy że cmd1 generuje pytanie z systemu np. "Are you sure? [y/N]:"
cmd2 jest odpowiedzią.
W tym wypadku ani średniki ani && nie działają.
Co zrobić żeby cmd2 była wypisywana jako odpowiedź na to pytanie?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[cmd] wiele komend w jednej linii... przypadek szczególny
« Odpowiedź #1 dnia: 2013-10-05, 17:48:54 »
średnik "łączy" polecenia po prostu wykonując je po sobie
&& to logiczne AND i powoduje wykonanie kolejnego polecenia tylko w przypadku powodzenia (zerowego kodu powrotu) poprzedniego

Ty potrzebujesz przekazać wyjście jednego procesu na wejście innego:
Jeśli nie zleży ci, żeby proces otrzymujący informacje został uruchomiony w tym samym środowisku co skrypt, to wystarczy pipe (przykład banalny):
echo wartosc | tee plik.txt
Jeśli chcesz, aby polecenie otrzymujące informacje działało w tym samym środowisku co skrypt:
read zmienna < <( echo wartosc )
echo $zmienna

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[cmd] wiele komend w jednej linii... przypadek szczególny
« Odpowiedź #2 dnia: 2013-10-06, 09:14:58 »
PS. A jeśli potrzebujesz bardziej zaawansowanej obsługi inputu, zawsze możesz użyć polecenia 'expect'.