LINUX.ORG.RU
решено ФорумAdmin

cp двойные пробелы

 ,


0

1
В скрипте есть конструкции вида:
cp «$VAR1» «$VAR2»
Если переменные(пути к файлам) не содержат двойных пробелов все прекрасно работает. Если содержат, то не может найти файл.
Как победить?
Спасибо.
Ответ на: комментарий от MikeDM

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

username46
() автор топика

ты точно написал cp "$VAR1" "$VAR2" кавычки такие? Или ёлочки неправославные? УМВР, показывай свой скрипт.

emulek
()
Ответ на: комментарий от MikeDM

при чём тут экранирование? Из переменных и в кавычках экранирование не раскрывается. Т.о.

#!/bin/bash
VAR="  "
touch "$VAR"
создаёт файл с именем " "

emulek
()
Ответ на: комментарий от emulek

Да вот самое смешное что такие синтетические тесты делал и все работало, а с реальными длинными путями не работает.

username46
() автор топика
Ответ на: комментарий от emulek

Да, кавычки такие, кину скрипт к вечеру ближе.

username46
() автор топика
Ответ на: комментарий от username46

Да вот самое смешное что такие синтетические тесты делал и все работало, а с реальными длинными путями не работает.

ну ты реально что-то напутал.

Hint: попробуй set -x

emulek
()
Ответ на: комментарий от emulek
Дело не в cp было, а вот в чем?

cat filelist2.txt | while read LINE
do
echo $LINE
done

Двойные пробелы удаляются из строк?
Почему так происходит?
Я не понимат.
username46
() автор топика
Ответ на: комментарий от username46

Вот я идиот, надо ведь аргумент echo в кавычки взять.

username46
() автор топика
Ответ на: комментарий от username46

echo $LINE done

Двойные пробелы удаляются из строк?

да. ты кавычки забыл возле $LINE

emulek
()
Ответ на: комментарий от username46
old_ifs=${IFS}
IFS=$'\n'
cat filelist2.txt | while read LINE
do
 echo ${LINE}
done
IFS=${old_ifs}
DiMoN ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.