ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] помогите с bash
@ 2006-01-18  6:42 Igo
  2006-01-18  7:10 ` "Владимир Николаевич Формин"
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Igo @ 2006-01-18  6:42 UTC (permalink / raw)
  To: community

есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
вот кусок кода
in=$1
if [ -n "$in"  ]; then
   for i in `/bin/ls -1 "$in"`
   do
     echo$i
   done
fi
так вот когда код натыкается на файл с пробелами то echo $i выдает по 
отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл 
одной строкой
спасибо


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
@ 2006-01-18  7:10 ` "Владимир Николаевич Формин"
  2006-01-18  7:19   ` Алексей Синицын
  2006-01-18  8:24   ` Michael Isachenkov
  2006-01-18  7:29 ` Eugene Ostapets
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 13+ messages in thread
From: "Владимир Николаевич Формин" @ 2006-01-18  7:10 UTC (permalink / raw)
  To: altlinux, community

>есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
>вот кусок кода
>in=$1
>if [ -n "$in"  ]; then
>   for i in `/bin/ls -1 "$in"`
>   do
>     echo$i
>   done
>fi
>так вот когда код натыкается на файл с пробелами то echo $i выдает по 
>отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл 
>одной строкой
>спасибо
Этот кусок кода, как и любой иной код, на трезвую (или здоровую) голову
не понять - bash-язык весьма алогичен. Что означает, например, условие
[ -n "$in"  ];? Ведь это чистейший кретинизм! К сожалению, ничем помочь
не могу. Я специализируюсь по нормальным и более-менее логическим языкам,
таким как Паскаль, Си, Бейсик ( ;) ), например. Ваш код, насколько я понял,
предназначен для того, чтобы выводить на экран список файлов? Но нафиг?
Есть же команда ls! А если надо в программе, так напишите лучше на Си или
на Паскале.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  7:10 ` "Владимир Николаевич Формин"
@ 2006-01-18  7:19   ` Алексей Синицын
  2006-01-18  8:24   ` Michael Isachenkov
  1 sibling, 0 replies; 13+ messages in thread
From: Алексей Синицын @ 2006-01-18  7:19 UTC (permalink / raw)
  To: vformin, ALT Linux Community

18.01.06, "Владимир Николаевич Формин"<vformin@yandex.ru> написал(а):
> >есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> >вот кусок кода
> >in=$1
> >if [ -n "$in"  ]; then
> >   for i in `/bin/ls -1 "$in"`
> >   do
> >     echo$i
> >   done
> >fi

> таким как Паскаль, Си, Бейсик ( ;) ), например. Ваш код, насколько я понял,
> предназначен для того, чтобы выводить на экран список файлов? Но нафиг?

 Насколько я понимаю, нужный случай упрощен до схематичности. В
исходной задаче - строка может быть другой.

 По теме: что значит выдает по отдельности, выдает все, но с переводами строки?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
  2006-01-18  7:10 ` "Владимир Николаевич Формин"
@ 2006-01-18  7:29 ` Eugene Ostapets
  2006-01-18  7:34 ` Alexey V. Novikov
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Eugene Ostapets @ 2006-01-18  7:29 UTC (permalink / raw)
  To: ALT Linux Community

18.01.06, Igo<altlinux aaanet.ru> написал(а):
> есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> вот кусок кода
> in=$1
> if [ -n "$in"  ]; then
>    for i in `/bin/ls -1 "$in"`
>    do
>      echo$i
>    done
> fi
> так вот когда код натыкается на файл с пробелами то echo $i выдает по
> отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл
> одной строкой
> спасибо
Читать про переменную окружения IFS до полного просветления :)
--
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
  2006-01-18  7:10 ` "Владимир Николаевич Формин"
  2006-01-18  7:29 ` Eugene Ostapets
@ 2006-01-18  7:34 ` Alexey V. Novikov
  2006-01-18  7:38 ` Peter Volkov
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Alexey V. Novikov @ 2006-01-18  7:34 UTC (permalink / raw)
  To: altlinux, ALT Linux Community

18.01.2006 9:42, Igo пишет:
> есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> вот кусок кода
> in=$1
> if [ -n "$in"  ]; then
>   for i in `/bin/ls -1 "$in"`
>   do
>     echo$i
>   done
> fi
> так вот когда код натыкается на файл с пробелами то echo $i выдает по 
> отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл 
> одной строкой
> спасибо

а если заменить на что-то типа
ls -1 "$in" | (while read i; do echo "$i"; done)

-- 
WBR, Alexey V. Novikov
----------------------
JID: alex-novikov at jabber dot ru


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
                   ` (2 preceding siblings ...)
  2006-01-18  7:34 ` Alexey V. Novikov
@ 2006-01-18  7:38 ` Peter Volkov
  2006-01-18 10:58 ` Sergey Shilov
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Peter Volkov @ 2006-01-18  7:38 UTC (permalink / raw)
  To: altlinux, ALT Linux Community

[-- Attachment #1: Type: text/plain, Size: 234 bytes --]

Попробуйте так:

in=$1
if [ -n "$in"  ]; then
   cd $in
   for i in *
   do
     echo $i
   done
fi

И посмотрите вот эту ссылку:
http://www.ruhr.de/home/smallo/award.html#ls

Peter.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  7:10 ` "Владимир Николаевич Формин"
  2006-01-18  7:19   ` Алексей Синицын
@ 2006-01-18  8:24   ` Michael Isachenkov
  1 sibling, 0 replies; 13+ messages in thread
From: Michael Isachenkov @ 2006-01-18  8:24 UTC (permalink / raw)
  To: vformin, ALT Linux Community

>>есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
>>вот кусок кода
>>in=$1
>>if [ -n "$in"  ]; then
>>  for i in `/bin/ls -1 "$in"`
>>  do
>>    echo$i
>>  done
>>fi
>>так вот когда код натыкается на файл с пробелами то echo $i выдает по 
>>отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл 
>>одной строкой
>>спасибо
> 
> Этот кусок кода, как и любой иной код, на трезвую (или здоровую) голову
> не понять - bash-язык весьма алогичен. Что означает, например, условие
> [ -n "$in"  ];? Ведь это чистейший кретинизм! К сожалению, ничем помочь
> не могу. Я специализируюсь по нормальным и более-менее логическим языкам,
> таким как Паскаль, Си, Бейсик ( ;) ), например. Ваш код, насколько я понял,
> предназначен для того, чтобы выводить на экран список файлов? Но нафиг?
> Есть же команда ls! А если надо в программе, так напишите лучше на Си или
> на Паскале.

поцчему алогичен?
поцчему кретинизм?
потому что вы привыкли к одному, а тут совсем другое?

-- 
Michael Isachenkov


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
                   ` (3 preceding siblings ...)
  2006-01-18  7:38 ` Peter Volkov
@ 2006-01-18 10:58 ` Sergey Shilov
  2006-01-18 18:48 ` Yura Kalinichenko
  2006-01-19 23:50 ` Aleksey Avdeev
  6 siblings, 0 replies; 13+ messages in thread
From: Sergey Shilov @ 2006-01-18 10:58 UTC (permalink / raw)
  To: community

В сообщении от 18 Январь 2006 06:42 Igo написал:
> есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> вот кусок кода
...
> так вот когда код натыкается на файл с пробелами то echo $i выдает по 
> отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл 
> одной строкой
Возможно пример кода
#!/bin/bash
#
location=$1
if [ -n "$location" ]
then
    for f in $location/*
    do
        echo `basename "$f"` ;
    done
fi
и шедевр "Искусство программирования на языке сценариев командной оболочки"
от Mendel Cooper в переводе  Андрея Киселева ( http://doks.gorodok.net/?p=719 )
спасут отца русской демократии :-)

-- 
С уважением
Сергей Шилов


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
                   ` (4 preceding siblings ...)
  2006-01-18 10:58 ` Sergey Shilov
@ 2006-01-18 18:48 ` Yura Kalinichenko
  2006-01-19 23:50 ` Aleksey Avdeev
  6 siblings, 0 replies; 13+ messages in thread
From: Yura Kalinichenko @ 2006-01-18 18:48 UTC (permalink / raw)
  To: altlinux, ALT Linux Community

В Срд, 18/01/2006 в 09:42 +0300, Igo пишет:
> есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> вот кусок кода
> in=$1
> if [ -n "$in"  ]; then
>    for i in `/bin/ls -1 "$in"`
>    do
>      echo$i
>    done
> fi

find $in -printf "%f\n"

-- 
Yura Kalinichenko




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-18  6:42 [Comm] помогите с bash Igo
                   ` (5 preceding siblings ...)
  2006-01-18 18:48 ` Yura Kalinichenko
@ 2006-01-19 23:50 ` Aleksey Avdeev
  2006-01-20  0:04   ` Aleksey Avdeev
  6 siblings, 1 reply; 13+ messages in thread
From: Aleksey Avdeev @ 2006-01-19 23:50 UTC (permalink / raw)
  To: ALT Linux Community

Igo пишет:
> есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> вот кусок кода
> in=$1
> if [ -n "$in"  ]; then
>   for i in `/bin/ls -1 "$in"`
                   ^^^^^^^^^^^

  Одно из лобовых решений: выделенное заменить на:

ls -1 |sed -e "s/^\(.*\)$/\'\1'/"

>   do
>     echo$i
>   done
> fi
> так вот когда код натыкается на файл с пробелами то echo $i выдает по
> отдельности ааа bbb ccc.xxx как сделать что бы он выдавал этот файл
> одной строкой
> спасибо

-- 

С уважением. Алексей.



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-19 23:50 ` Aleksey Avdeev
@ 2006-01-20  0:04   ` Aleksey Avdeev
  2006-01-24  9:19     ` Eugene Ostapets
  0 siblings, 1 reply; 13+ messages in thread
From: Aleksey Avdeev @ 2006-01-20  0:04 UTC (permalink / raw)
  To: ALT Linux Community

Aleksey Avdeev пишет:
> Igo пишет:
> 
>>есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
>>вот кусок кода
>>in=$1
>>if [ -n "$in"  ]; then
>>  for i in `/bin/ls -1 "$in"`
> 
>                    ^^^^^^^^^^^
> 
>   Одно из лобовых решений: выделенное заменить на:
> 
> ls -1 |sed -e "s/^\(.*\)$/\'\1'/"

  Точнее на ls -1 "$in" |sed -e "s/^\(.*\)$/\'\1'/"

-- 

С уважением. Алексей.



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-20  0:04   ` Aleksey Avdeev
@ 2006-01-24  9:19     ` Eugene Ostapets
  2006-01-25  9:59       ` Aleksey Avdeev
  0 siblings, 1 reply; 13+ messages in thread
From: Eugene Ostapets @ 2006-01-24  9:19 UTC (permalink / raw)
  To: ALT Linux Community

20.01.06, Aleksey Avdeev<solo solin.spb.ru> написал(а):
> Aleksey Avdeev пишет:
> > Igo пишет:
> >
> >>есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
> >   Одно из лобовых решений: выделенное заменить на:
> > ls -1 |sed -e "s/^\(.*\)$/\'\1'/"
>   Точнее на ls -1 "$in" |sed -e "s/^\(.*\)$/\'\1'/"
И что только люди не придумают, чтобы не читать документацию...
Достаточно переопределить переменную IFS, чтобы она не включала пробел
как разделитель токенов и все будет работать...

--
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Comm] помогите с bash
  2006-01-24  9:19     ` Eugene Ostapets
@ 2006-01-25  9:59       ` Aleksey Avdeev
  0 siblings, 0 replies; 13+ messages in thread
From: Aleksey Avdeev @ 2006-01-25  9:59 UTC (permalink / raw)
  To: ALT Linux Community

Eugene Ostapets пишет:
> 20.01.06, Aleksey Avdeev<solo solin.spb.ru> написал(а):
> 
>>Aleksey Avdeev пишет:
>>
>>>Igo пишет:
>>>
>>>
>>>>есть файлы в которых есть пробел, например "aaa bbb ccc.xxx"
>>>
>>>  Одно из лобовых решений: выделенное заменить на:
             ^^^^^^^
>>>ls -1 |sed -e "s/^\(.*\)$/\'\1'/"
>>
>>  Точнее на ls -1 "$in" |sed -e "s/^\(.*\)$/\'\1'/"
> 
> И что только люди не придумают, чтобы не читать документацию...

  Это да! :-) (Потому и написал что это _лобовое_ решение.)

> Достаточно переопределить переменную IFS, чтобы она не включала пробел
> как разделитель токенов и все будет работать...

-- 

С уважением. Алексей.



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2006-01-25  9:59 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-18  6:42 [Comm] помогите с bash Igo
2006-01-18  7:10 ` "Владимир Николаевич Формин"
2006-01-18  7:19   ` Алексей Синицын
2006-01-18  8:24   ` Michael Isachenkov
2006-01-18  7:29 ` Eugene Ostapets
2006-01-18  7:34 ` Alexey V. Novikov
2006-01-18  7:38 ` Peter Volkov
2006-01-18 10:58 ` Sergey Shilov
2006-01-18 18:48 ` Yura Kalinichenko
2006-01-19 23:50 ` Aleksey Avdeev
2006-01-20  0:04   ` Aleksey Avdeev
2006-01-24  9:19     ` Eugene Ostapets
2006-01-25  9:59       ` Aleksey Avdeev

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git