Strona 1 z 1

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

: 05 paź 2013, 16:36
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?

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

: 05 paź 2013, 16:42
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.

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

: 10 paź 2013, 21:23
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.

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

: 11 paź 2013, 11:02
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