The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"bash script: присвоить переменной строку из файла"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"bash script: присвоить переменной строку из файла" 
Сообщение от serg3263 Искать по авторуВ закладки(ok) on 19-Окт-05, 16:53  (MSK)
Нужно переменной присвоить в кач значения стоку из файла,
как в примере
-------------------------
for item in $(cat $file)
do
...
done
--------------------------
Но строка с пробелами трактуется bash как отдельные значения...

Как присвоить "всю" строку вместе с пробелами?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "bash script: присвоить переменной строку из файла" 
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 19-Окт-05, 17:14  (MSK)
>Нужно переменной присвоить в кач значения стоку из файла,
>как в примере
>-------------------------
>for item in $(cat $file)
>do
>...
>done
>--------------------------
>Но строка с пробелами трактуется bash как отдельные значения...
>
>Как присвоить "всю" строку вместе с пробелами?

[tmp]$ cat test
1 2 3 4 5
[tmp]$ cat 1.sh
#!/bin/sh
for i in `cat test`
do
        echo ${i}
done
[tmp]$ ./1.sh
1
2
3
4
5

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "bash script: присвоить переменной строку из файла" 
Сообщение от serg3263 Искать по авторуВ закладки(ok) on 19-Окт-05, 17:51  (MSK)
>>Как присвоить "всю" строку вместе с пробелами?
>
>[tmp]$ cat test
>1 2 3 4 5
>[tmp]$ cat 1.sh
>#!/bin/sh
>for i in `cat test`
>do
>        echo ${i}
>done
>[tmp]$ ./1.sh
>1
>2
>3
>4
>5

А как получить результат

1 2 3 4 5

?

Это должно быть применено в скрипте с файловыми операциями:
1. читаем пути и имена файлов из файла,
   ------
   path1/name1
   path2/name2
   path3/name3
   ...
   ------
2. преобразуем (экранируем badsymbols),
   badpath!/bad!name --> badpath\!/bad\!name
   bad path/bad name --> bad\ path/bad\ name
3. передаем полученные строки командам bash.

Проблема возникает на path/name с пробелами:
   bad path/bad name
в опреаторе for интерпретируется как 3 значения:
   bad
   path/bad
   name

Требуется переменной присвоить "всю строку" сразу а не
фрагменты по мере наличия пробелов.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "bash script: присвоить переменной строку из файла" 
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 19-Окт-05, 18:00  (MSK)
>>>Как присвоить "всю" строку вместе с пробелами?
>>
>>[tmp]$ cat test
>>1 2 3 4 5
>>[tmp]$ cat 1.sh
>>#!/bin/sh
>>for i in `cat test`
>>do
>>        echo ${i}
>>done
>>[tmp]$ ./1.sh
>>1
>>2
>>3
>>4
>>5
>
>А как получить результат
>
>1 2 3 4 5
>
>?
>
>Это должно быть применено в скрипте с файловыми операциями:
>1. читаем пути и имена файлов из файла,
>   ------
>   path1/name1
>   path2/name2
>   path3/name3
>   ...
>   ------
>2. преобразуем (экранируем badsymbols),
>   badpath!/bad!name --> badpath\!/bad\!name
>   bad path/bad name --> bad\ path/bad\ name
>3. передаем полученные строки командам bash.
>
>Проблема возникает на path/name с пробелами:
>   bad path/bad name
>в опреаторе for интерпретируется как 3 значения:
>   bad
>   path/bad
>   name
>
>Требуется переменной присвоить "всю строку" сразу а не
>фрагменты по мере наличия пробелов.


Togda tozhe samoje 4to i newser napisal:
#!/bin/sh
cat test | while read i
do
        echo ${i}
done


[tmp]$ ./1.sh
1 2
3
[tmp]$ cat test
1 2
3

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "bash script: присвоить переменной строку из файла" 
Сообщение от newser Искать по авторуВ закладки(ok) on 19-Окт-05, 17:17  (MSK)
>Нужно переменной присвоить в кач значения стоку из файла,
>как в примере
>-------------------------
>for item in $(cat $file)
>do
>...
>done
>--------------------------
>Но строка с пробелами трактуется bash как отдельные значения...
>
>Как присвоить "всю" строку вместе с пробелами?

Можно так:

cat $file | while read item
do
...
done

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "bash script: присвоить переменной строку из файла" 
Сообщение от serg3263 Искать по авторуВ закладки(ok) on 19-Окт-05, 18:57  (MSK)

>
>Можно так:
>
>cat $file | while read item
>do
>...
>done


Работает, спасибо.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру