Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2014-01-10 12:13:35

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

[SOLVED] dziwne zachowanie while

Mam skrypt:

Kod:

find . -type f | while read line; do
WZOR="SSS";
for i in 1 2 3 4 5 6; do
TMP=`ssh 192.168.0.1 "hostname"`
echo "${i} - ${TMP}";
done
done

dostaje cos takiego:

Kod:

1 - linux
2 - linux
3 - linux
4 - linux
5 - linux
6 - linux

Co jest niepoprawne gdyż w katalogu mam 3 pliki.

Jednak jak zrobię:

Kod:

find . -type f | while read line; do
WZOR="SSS";
for i in 1 2 3 4 5 6; do
TMP="linux"
echo "${i} - ${TMP}";
done
done

to już dostaję:

Kod:

1 - linux
2 - linux
3 - linux
4 - linux
5 - linux
6 - linux
1 - linux
2 - linux
3 - linux
4 - linux
5 - linux
6 - linux
1 - linux
2 - linux
3 - linux
4 - linux
5 - linux
6 - linux

co jest poprawne bo w katalogu są 3 pliki.

Może ktoś wie dlaczego tak się dzieje?

Ostatnio edytowany przez djjanek (2014-10-27 17:05:50)

Offline

 

#2  2014-01-10 21:23:52

  gindek - Zubr, bydle na etacie.

gindek
Zubr, bydle na etacie.
Skąd: Z puszczy.
Zarejestrowany: 2008-12-08

Re: [SOLVED] dziwne zachowanie while

dodaj loga (echo ) przed TMP moze ci sie ssh powiesilo z jakiegos powodu.


" Wojny przychodzą i odchodzą, a moi żołnierze są wieczni"


"Zbuduj mały, dziarski router z udostępnionych przez prowadzącego części od Kamaza?"

Offline

 

#3  2014-01-11 20:32:34

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

Nie bo po tych tylko 6 liniach dostaję znak  zachęty konsoli :(

Offline

 

#4  2014-01-12 20:43:58

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: [SOLVED] dziwne zachowanie while

wywal

Kod:

TMP="linux"

przed petle for i sprawdz

a tutaj

Kod:

TMP=`ssh 192.168.0.1 "hostname"`

nie powinno byc:

Kod:

TMP=`ssh 192.168.0. ${i}"hostname"`

Ostatnio edytowany przez jezoo (2014-01-12 20:45:34)


LRU #480459

Offline

 

#5  2014-01-13 11:00:45

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

@jezoo nie powinno być, jak i wywalenie nic nie daje.
Zastanawia mnie jedno dlaczego jak nie łacze się po SSH to pętla while wykonuję się tylko raz a jak nie łącze się po ssh to wykonuje się 3 razy.

Zgodnie z

Kod:

 find . -type f | while read line; do

skoro w katalogu są 3 pliki to powinna się wykonać 3 razy.

Ostatnio edytowany przez djjanek (2014-01-13 11:01:18)

Offline

 

#6  2014-01-16 09:42:56

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: [SOLVED] dziwne zachowanie while

zamiast find daj ls i sprawdz


LRU #480459

Offline

 

#7  2014-01-16 10:11:45

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

Nie pomogło:

Kod:

cat ./ls_test.sh
#!/bin/bash

#set -x

ls -l | grep .txt | while read line; do
echo "Linia: ${line}"
WZOR="SSS";
for i in 1 2 3 4 5 6; do
#TMP="linux"
TMP=`ssh 10.10.10.2 "hostname"`
echo "${i} - ${TMP}";
done
done

Kod:

ls -l | grep .txt
-rw-r--r-- 1 root root   0 sty 13 09:54 file1.txt
-rw-r--r-- 1 root root   0 sty 13 09:54 file2.txt

Kod:

./ls_test.sh
Linia: -rw-r--r-- 1 root root   0 sty 13 09:54 file1.txt
1 - debian2
2 - debian2
3 - debian2
4 - debian2
5 - debian2
6 - debian2

Offline

 

#8  2014-01-16 10:26:46

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: [SOLVED] dziwne zachowanie while

zamiast while daj fora tak jeszcze sprawdź :)


LRU #480459

Offline

 

#9  2014-01-16 10:34:53

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

for zadziała tylko co będzie jak plik będzie miał w nazwie spację, wtedy będę miał zakłamane dane.

Offline

 

#10  2014-01-18 18:35:03

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: [SOLVED] dziwne zachowanie while

Nie jeśli dasz wcześniej
IFS=$'\n'


a to feler westchnął seler

Offline

 

#11  2014-01-18 22:27:26

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

@seler dzięki teraz zadziałało.
Obejście jest, jednak dalej mnie ciekawi dlaczego z while tak się dzieje.

Offline

 

#12  2014-01-19 00:09:04

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: [SOLVED] dziwne zachowanie while

Nie mam pojęcia czemu. Ale u mnie pojawia się ta sama anomalia.


a to feler westchnął seler

Offline

 

#13  2014-01-19 14:50:26

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

No nic dzieki Tobie dowiedziałem się że można ustawiać rozdzielniki w pętli FOR, i nie muszą to być jedynie spacje, jeszcze raz dzięki :)

Offline

 

#14  2014-01-19 15:01:49

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: [SOLVED] dziwne zachowanie while

Spoko :)
Ale z tym while to naprawdę dziwna sprawa.


a to feler westchnął seler

Offline

 

#15  2014-10-27 17:03:33

  djjanek - Użytkownik

djjanek
Użytkownik
Skąd: whereis
Zarejestrowany: 2007-11-15
Serwis

Re: [SOLVED] dziwne zachowanie while

Wiem już dlaczego tak się dzieje, while odpalane jest w osobnej konsoli, czyli nie ma dostępu do wszystkich danych jak i kiedy się skończy to też nie przekazuje swoich zmiennych. Trzeba inaczej napisać skrypt. Jak znajdę chwilę to poprawię i napiszę dokładne rozwiązanie.

Ostatnio edytowany przez djjanek (2014-10-27 17:06:40)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)