Strona 1 z 1

[BASH] ssh, skladnia.

: 09 paź 2011, 00:22
autor: hozz
Witam,

Z jakis przyczyn chce wypisywac z kazdego wiersza pierwszy wyraz. Normalnie zrobilbym to tak:

Kod: Zaznacz cały

less nazwa.txt | awk '{print $1}'

No i zazwyczaj to dziala.. tylko myk jest w tym ze musze robic to przez ssh i robic to w skrypcie a nie poprzez reczne logowanie sie i wpisywanie awk, moja komenda wyglada tak:

Kod: Zaznacz cały

ssh login@blabla.pl "instrukcja;less nazwa.txt | awk '{print $1}' ;instrukcja"
Oczywiscie wszystkie instrukcje wykonuje, poza wlasnie ta jedna ktora na komputerze lokalnym dziala bez zarzutu. Co jest nie tak? Dlaczego to nie dziala? Oczywiscie bash nie wywala zadnych bledow.

Pozdrawiam

Re: [BASH] ssh, skladnia.

: 09 paź 2011, 11:02
autor: beluosus
BASH - ssh - wykonywanie 2 komend w jednym poleceniu
W skrócie: backslash przed $ (zmienną).
Nadużywasz potoków (a less to już w ogóle przegięcie, zazwyczaj ludzie używają cat), wystarczy awk '...' plik.

Re: [BASH] ssh, skladnia.

: 09 paź 2011, 13:20
autor: hozz
Faktycznie, moze troche naduzywam ale to co mowisz wciaz nie dziala. Zrobmy to troche inaczej, mam ssh i wszystkie instrukcje musze sie wykonywac w cudzyslowie, tzn.

Kod: Zaznacz cały

ssh login@bla.pl "instrukcja;instrukcja; (find . -type f | xargs md5sum | awk '{print $1}' | sort) "
No i mam tez cos takiego, chce wpisac sobie sumy kontrolne bez sciezek do nich. Wlasnie przez to ze " ' ' " (cudzyslowie zazebiaja sie z apostrofami) to cos nie dziala. Zmiana tego na dolary czy odwrocone apostrofy nic nie daje.
Probowalem tak:

Kod: Zaznacz cały

ssh login@bla.pl $(instrukcja;instrukcja; (find . -type f | xargs md5sum | awk '{print $1}' | sort) )
ssh login@bla.pl "(instrukcja;instrukcja; (find . -type f | xargs md5sum | $(awk '{print $1}') | sort)"
ssh login@bla.pl "(instrukcja;instrukcja; $(find . -type f | xargs md5sum | awk '{print $1}' | sort) "
Ogolnie mozna te instrukcje testowac na lokalnej maszynie, wklepujac te podwojne apostrofy od tak zeby byly, ale to tez poprawnych wynikow nie zwraca, ja nie wiem nie widze tego jak narazie.
Mozesz podpowiedziec? Dzieki.

//EDIT:
Dobra poradzilem sobie z moim problemem troche inaczej, bez wykorzystywania jakis podwojnych cudzslowiow i zagniezdzonych apostrofow, co nie zmienia faktu ze interesuje mnie jak rozwiazac problem, ktory tego bedzie wymagal.

Re: [BASH] ssh, skladnia.

: 09 paź 2011, 14:39
autor: beluosus
Najpierw poczytaj co robi $(), bo widzę, że na chybił trafił wpisujesz krzaczki do polecenia. http://tldp.org/LDP/abs/html/commandsub.html

Kod: Zaznacz cały

ssh beluosus@... "find . -type f -exec md5sum {} \; | cut -d' ' -f1"
ssh beluosus@... "find . -type f -exec md5sum {} \; | awk '{print \$1}'"

Re: [BASH] ssh, skladnia.

: 09 paź 2011, 15:11
autor: hozz
No ok, dzięki. Uczę sie dopiero: P