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  2015-12-03 20:49:55

  bonus - Użytkownik

bonus
Użytkownik
Zarejestrowany: 2009-11-12

[SOLVED] - Echo wstawia nową linię, why?

Polecenie

Kod:

df -h | tail -n +2 | awk '{print $5 " " $6}'
81% /
0% /sys/fs/cgroup
1% /dev
1% /run
0% /run/lock
1% /run/shm
1% /run/user
81% /home/bonus

Natomiast skrypcik

Kod:

#!/bin/bash
for uz_mont in `df -h| tail -n +2 | awk '{print $5 " " $6}'`
do 
echo ${uz_mont}
done

wstawia pomiędzy argumentami nowy wiersz

Kod:

81%
/
0%
/sys/fs/cgroup
1%
/dev
1%
/run
0%
/run/lock
1%
/run/shm
1%
/run/user
81%
/home/bonus

niech ktoś mnie oświeci ;)

Ostatnio edytowany przez bonus (2015-12-03 22:08:14)

Offline

 

#2  2015-12-03 21:03:21

  Pavlo950 - człowiek pasjonat :D

Pavlo950
człowiek pasjonat :D
Zarejestrowany: 2012-02-20
Serwis

Re: [SOLVED] - Echo wstawia nową linię, why?

[quote=man echo]NAZWA
       echo - wyświetla wiersz tekstu

SKŁADNIA
       echo [KRÓTKA-OPCJA]... [NAPIS]...
       echo DŁUGA-OPCJA

OPIS
       Wyświetla NAPIS(Y) na standardowe wyjście.

       [b]-n     nie wypisuje kończącego znaku nowego wiersza[/b]

       -e     włącza interpretowania sekwencji specjalnych z ukośnikiem

       -E     wyłącza interpretowanie sekwencji specjalnych z ukośnikiem (domyślnie)

       --help wyświetla ten tekst i kończy pracę

       --version
              wyświetla informacje o wersji i kończy działanie

       Jeśli użyto opcji -e, to rozpoznawane są następujące sekwencje specjalne:

       \\     odwrotny ukośnik

       \a     dzwonek, alarm (BEL)

       \b     backspace

       \c     kończy wypisywanie wyniku

       \e     escape

       \f     wysuw strony

       \n     znak nowego wiersza

       \r     powrót karetki

       \t     tabulacja pozioma

       \v     tabulacja pionowa

       \0NNN  bajt o wartości ósemkowej NNN (1 do 3 cyfr)

       \xHH   bajt o wartości szesnastkowej HH (1 do 2 cyfr)

       [b]UWAGA:  aktualnie  używana  powłoka  może  posiadać  swoją wersję echo, która z reguły przesłania wersję opisaną w niniejszym
       podręczniku. Proszę zapoznać się z dokumentacją używanej powłoki, aby dowiedzieć się szczegółów o obsługiwanych opcjach.  Aby
       wywołać opisaną tu wersję, można użyć polecenia env tzn. env echo ....[/b]

       Strona  internetowa  z  pomocą  GNU  coreutils: <http://www.gnu.org/software/coreutils/> Zgłoszenia błędów w tłumaczeniu echo
       proszę wysyłać na adres <http://translationproject.org/team/pl.html>[/quote]

Ostatnio edytowany przez Pavlo950 (2015-12-03 21:07:25)

Offline

 

#3  2015-12-03 21:26:26

  Pakos - Członek DUG

Pakos
Członek DUG
Zarejestrowany: 2007-06-12
Serwis

Re: [SOLVED] - Echo wstawia nową linię, why?

bo pętla wszystko co po spacji traktuje jako ${uz_mont}+1

wynik jaki chcesz mozna uzyskac na kilka sposobów ale ten chyba najszybszy

Kod:

for uz_mont in `df -h| tail -n +2 | awk '{print $5 ":" $6}'`; do echo ${uz_mont}|tr ':' ' '; done

Ostatnio edytowany przez Pakos (2015-12-03 21:38:26)

Offline

 

#4  2015-12-03 21:42:55

  meciarz - Użytkownik

meciarz
Użytkownik
Zarejestrowany: 2010-06-08

Re: [SOLVED] - Echo wstawia nową linię, why?

problemem nie jest echo, a `df -h| tail -n +2 | awk '{print $5 " " $6}'` w lini for .....
jeśli wywołasz taką komendę w konsoli, to prawidłowo masz każdy wiersz w osobnej linii, natomiast wywołane w skrypcie np jako podstawienie do zmiennej zapisuje wszystko jako w jednej linii.
W takim wypadku powinieneś najpierw przekierować wyjście tego polecenia do pliku, a następnie wykonywać pętle z tego pliku.
Ale z tym takie użycie pętli for rozdzieli ponieważ, użycie spacji aby je rozdzielić dla pętli for jest błędna, gdyż on wszystkie je traktuje jako osobną wartość (jako delimiter znak spacji) :)
Jeśli nie chcesz zapisywać tego do pliku zrób np:

Kod:

for uz_mont in `df -h| tail -n +2 | awk '{print $5 "|" $6}'`
do
        echo ${uz_mont} | tr  '|' ' '
done

lub jeszcze prościej:

Kod:

printf '%s\n' "`df -h| tail -n +2 | awk '{print $5 " " $6}'`"

Ostatnio edytowany przez meciarz (2015-12-03 22:05:21)

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.007 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00122 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='18.117.168.71' WHERE u.id=1
0.00075 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.117.168.71', 1732430594)
0.00040 SELECT * FROM punbb_online WHERE logged<1732430294
0.00071 SELECT topic_id FROM punbb_posts WHERE id=293937
0.00005 SELECT id FROM punbb_posts WHERE topic_id=27961 ORDER BY posted
0.00058 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=27961 AND t.moved_to IS NULL
0.00009 SELECT search_for, replace_with FROM punbb_censoring
0.00104 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=27961 ORDER BY p.id LIMIT 0,25
0.00079 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27961
Total query time: 0.00578 s