Нужно переменной присвоить в кач значения стоку из файла,
как в примере
-------------------------
for item in $(cat $file)
do
...
done
--------------------------
Но строка с пробелами трактуется bash как отдельные значения...Как присвоить "всю" строку вместе с пробелами?
>Нужно переменной присвоить в кач значения стоку из файла,
>как в примере
>-------------------------
>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
>>Как присвоить "всю" строку вместе с пробелами?
>
>[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Требуется переменной присвоить "всю строку" сразу а не
фрагменты по мере наличия пробелов.
>>>Как присвоить "всю" строку вместе с пробелами?
>>
>>[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
>Нужно переменной присвоить в кач значения стоку из файла,
>как в примере
>-------------------------
>for item in $(cat $file)
>do
>...
>done
>--------------------------
>Но строка с пробелами трактуется bash как отдельные значения...
>
>Как присвоить "всю" строку вместе с пробелами?Можно так:
cat $file | while read item
do
...
done
>
>Можно так:
>
>cat $file | while read item
>do
>...
>done
Работает, спасибо.