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)


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
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


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
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ź :)


[img]http://intershock.pl/images/icons/freebsd.jpg[/img] [img]http://www.the-eleven.com/site_media/static/img/postgresql_powered.png[/img] [img]http://www.wwgmc.com/images/badge_php.gif[/img]
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
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.014 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00159 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.130.31' WHERE u.id=1
0.00080 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.130.31', 1714678006)
0.00048 SELECT * FROM punbb_online WHERE logged<1714677706
0.00069 DELETE FROM punbb_online WHERE ident='18.223.125.219'
0.00069 DELETE FROM punbb_online WHERE ident='47.128.51.105'
0.00073 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24969 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00425 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24969 ORDER BY p.id LIMIT 0,25
0.00109 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24969
Total query time: 0.01054 s