- Помогите с перемещением файлов,
phpcoder, 14:29 , 12-Май-08 (1)>подскажите, пожалуйста, что я делаю не так: > >#!/bin/sh >$TMPFILE="log.txt" >cat ./$TMPFILE | sed -e "s|[^/]*/||g" | >while read text;do > mv $text $ENGINEDIR >done Возможно, что у вас после обработки sed'ом в некоторых случаях остаётся пустая строка? Тогда можно сделать так: -mv $text $ENGINEDIR +if [ -n "$text" ]; then + mv "$text" "$ENGINEDIR" +fi
- Помогите с перемещением файлов,
mxmedia, 14:59 , 12-Май-08 (2) >-mv $text $ENGINEDIR >+if [ -n "$text" ]; then >+ mv "$text" "$ENGINEDIR" >+fi не помогает... дело в том, что если в цикле вставить echo $text на выводе пустых строк нету
- Помогите с перемещением файлов,
phpcoder, 15:11 , 12-Май-08 (5)>подскажите, пожалуйста, что я делаю не так: > >#!/bin/sh >$TMPFILE="log.txt" >cat ./$TMPFILE | sed -e "s|[^/]*/||g" | >while read text;do > mv $text $ENGINEDIR >done > >результатом вываливаются ошибки о не существовании файлов... Короче, ясно. В файле полные пути к файлам. Вы же их обрезаете и конечно же оказывается, что файлы не найдены, потому что они в другом каталоге. Попробуйте так: while read text;do mv "$text" $ENGINEDIR" done < "$TMPFILE"
- Помогите с перемещением файлов,
mxmedia, 15:20 , 12-Май-08 (6)не помогает... Вопрос не совсем в том, почему файлы не найдены, а в том, почему echo "$text $ENGINEDIR" выводит только вторую переменную... , а mv $text $ENGINEDIR выдает, что не найдены файлы, причем светит последние несколько символов от имени... т.е.: : No such file or directoryupe0.nup : No such file or directoryupe1.nup : No such file or directoryupe2.nup
- Помогите с перемещением файлов,
phpcoder, 15:24 , 12-Май-08 (7)>выдает, что не найдены файлы, причем светит последние несколько символов от имени... Мне кажется, что ваш пример упрощен и в реальности данные/скрипт несколько другие... Между отображением имени файла и его получением из файла на $text может влиять только sed. Возможно, он как-то не так обрабатывает ваши строчки. sh -x вам в помощь!
- Помогите с перемещением файлов,
mxmedia, 15:31 , 12-Май-08 (8)На самом деле скрипт очень большой... но не работает именно этот цикл...while read text;do mv "$text" "$ENGINEDIR" echo "$text" echo "$ENGINEDIR" echo "$text $ENGINEDIR" done Полный вывод получается таким: : No such file or directoryup <== почему здесь не полностью указано имя? engine0.nup /var/www/data/ /var/www/data/ <== почему не пишет имя файла? : No such file or directoryup engine1.nup /var/www/data/ /var/www/data/ : No such file or directoryup engine2.nup /var/www/data/ /var/www/data/ почему он не пишет имя файла?
- Помогите с перемещением файлов,
phpcoder, 15:42 , 12-Май-08 (9)>На самом деле скрипт очень большой... но не работает именно этот цикл... > > >while read text;do > mv "$text" "$ENGINEDIR" > echo "$text" > echo "$ENGINEDIR" > echo "$text $ENGINEDIR" > done >Проверьте так: while read text;do echo mv $text $ENGINEDIR done >[оверквотинг удален] >: No such file or directoryup >engine1.nup >/var/www/data/ > /var/www/data/ >: No such file or directoryup >engine2.nup >/var/www/data/ > /var/www/data/ > >почему он не пишет имя файла? Что-то многовато полного вывода для всего трех echo. Варианты: - в $text оказывается несколько строк - в $text попадает сообщение об ошибке по какой-то причине Трудно сказать наверняка не видя код. P.S. Опять же напоминаю про sh -x: добавьте перед циклом set -x, а после set +x и посмотрите что будет выводить.
- Помогите с перемещением файлов,
madskull, 16:05 , 19-Май-08 (11)>[оверквотинг удален] >в том, почему >echo "$text $ENGINEDIR" >выводит только вторую переменную... , а >mv $text $ENGINEDIR >выдает, что не найдены файлы, причем светит последние несколько символов от имени... > >т.е.: >: No such file or directoryupe0.nup >: No such file or directoryupe1.nup >: No such file or directoryupe2.nup Есть подозрение, что исходный файл имеет DOS-овский форимат конца строки, т.е. \r\n. Просто надо убрать эти лишние '\r', например sed 's/\r//'
- Помогите с перемещением файлов,
jd2, 03:41 , 16-Май-08 (10)Приведённый Вами скрипт, если в нём заменить $TMPFILE="log.txt" на TMPFILE="log.txt" и определить переменную ENGINEDIR, работает нормально (хотя я бы использовал здесь basename вместо sed).Всякие ковычки вокруг "$text" и т.п. актуальны, если в путях могут быть пробельные символы.
|