[cmd] wiele komend w jednej linii... przypadek szczególny

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
bazz
Piegowaty Guziec
Piegowaty Guziec
Posty: 1
Rejestracja: 05 paź 2013, 16:34

[cmd] wiele komend w jednej linii... przypadek szczególny

Post autor: bazz »

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?
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [cmd] wiele komend w jednej linii... przypadek szczególny

Post autor: ethanak »

Kod: Zaznacz cały

man bash
man expect
Niestety - temat zbyt obszerny aby go omawiać w jednym poście.
Tak przy okazji - użyłbym tu czegoś innego niż shell (Pythona, Perla, zależy co będzie łatwiejsze) - w shellu się zakopiesz.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: [cmd] wiele komend w jednej linii... przypadek szczególny

Post autor: beluosus »

Najprościej takim oto przekierowaniem (gdzie cmd1 to "read", a cmd2 to "date"):

Kod: Zaznacz cały

# tekst:
read TMP <<< test ; echo $TMP
# polecenie:
read TMP <<< $(date) ; echo $TMP
Aczkolwiek nie zawsze musi to zadziałać - zależy to od sposobu pobierania danych od użytkownika.
Awatar użytkownika
Spojler
Piegowaty Guziec
Piegowaty Guziec
Posty: 26
Rejestracja: 15 cze 2007, 15:58
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Xfce
Architektura: x86_64
Kontakt:

Re: [cmd] wiele komend w jednej linii... przypadek szczególny

Post autor: Spojler »

Ja bym proponował zrobić skrypt w bashu.

Możesz użyć czegoś takiego:

wynik=$(komenda)

zmienna $wynik przechowuje wynik wyświetlany po użyciu komendy, można do komendy dodać grep, last, head i innych przesiewaczy tekstu i możesz wykorzystać tą zmienną do innych celów:

echo $wynik

lub

nowa_komenda $wynik - tutaj wynik poprzedniej komendy wykorzystujemy jako opcja do nowej komendy.

lub

cat /var/log/daemon.log |grep $wynik - tutaj $wynik służy do odsiewu pliku tekstowego w tym przypadku plik logów
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości