* 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 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
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 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