[BASH] ssh, skladnia.

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
hozz
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 10 paź 2010, 20:15
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

[BASH] ssh, skladnia.

Post 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
Ostatnio zmieniony 09 paź 2011, 10:23 przez hozz, łącznie zmieniany 1 raz.
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: [BASH] ssh, skladnia.

Post 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.
hozz
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 10 paź 2010, 20:15
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Re: [BASH] ssh, skladnia.

Post 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.
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: [BASH] ssh, skladnia.

Post 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}'"
hozz
Piegowaty Guziec
Piegowaty Guziec
Posty: 7
Rejestracja: 10 paź 2010, 20:15
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Re: [BASH] ssh, skladnia.

Post autor: hozz »

No ok, dzięki. Uczę sie dopiero: P
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

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