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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Mam plik test.txt a w nim
Jeden dwa Trzy cztery
Jak napisać skrypt w bash, abym miał jako jedną zmienną jedną linijkę.
Mam takie coś:
TEST=`cat test.txt` for I in $TEST; do echo $I; done
ale to nie działa jak trzeba.
Ostatnio edytowany przez djjanek (2011-07-19 13:46:51)
Offline
co prawda nie skrypt a jednolinijkowiec ale chyba dalej sobie poradzisz
winnetou@wigwam /tmp $ cat nic Jeden dwa Trzy cztery winnetou@wigwam /tmp $ cat nic |while read LINE;do echo "linia ${LINE}";done linia Jeden dwa linia Trzy cztery
albo tak:
winnetou@wigwam /tmp $ cat nic Jeden dwa Trzy cztery winnetou@wigwam /tmp $ export I=1 winnetou@wigwam /tmp $ cat nic |while read LINE;do echo "linia ${I} ${LINE}"; I=$(($I + 1));done linia 1 Jeden dwa linia 2 Trzy cztery
Ostatnio edytowany przez winnetou (2011-07-19 13:52:58)
Offline
winnetou napisał(-a):
Kod:
winnetou@wigwam /tmp $ cat nic |while read LINE;do echo "linia ${LINE}";done
Koszernie jest tak:
while read LINE;do echo "linia ${LINE}";done < /tmp/nic
Przy okazji rozwiąże to problem z podmianą wartości zmiennej po zakończeniu pętli (powłoka potok uruchamia jako podpowłokę (subproces), przez co po zakończeniu działania pętli wartość zmiennej jest taka sama jak przed rozpoczęciem pętli).
Offline
Minio - a i owszem może koszerniej ale spotkałem się w swoim krótkim, pseudoskrypciarskim życiu z kilkoma przypadkami gdzie nie bardzo takie coś mi chciało działać - albo wyrzucało jakieś dziwności. Aczkolwiek bywały sytuacje gdzie moja wersja zawodziła a ta koszerna dawała radę. Nie wiem czy ja coś spier^W zepsułem czy to jakiś kolejny *szyzm, w każdym razie wydaje mi się, że najważniejsze jest to iż obie wersje działają a i złożoność czasowa/pamięciowa/obliczeniowa pewnie jest zbliżona.
Offline