Nowe posty

Autor Wątek: [cmd] wiele komend w jednej linii... przypadek szczególny  (Przeczytany 11366 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'.