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?
[cmd] wiele komend w jednej linii... przypadek szczególny
- 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
Kod: Zaznacz cały
man bash
man expect
Tak przy okazji - użyłbym tu czegoś innego niż shell (Pythona, Perla, zależy co będzie łatwiejsze) - w shellu się zakopiesz.
- beluosus
- 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
Najprościej takim oto przekierowaniem (gdzie cmd1 to "read", a cmd2 to "date"):
Aczkolwiek nie zawsze musi to zadziałać - zależy to od sposobu pobierania danych od użytkownika.
Kod: Zaznacz cały
# tekst:
read TMP <<< test ; echo $TMP
# polecenie:
read TMP <<< $(date) ; echo $TMP
- Spojler
- 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
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
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
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 15 gości