У меня есть список файлов, которые я пытаюсь скопировать и переместить (использование CP и mv) в сценарии оболочки удара. Проблема, с которой я сталкиваюсь, состоит в том, что я не могу заставить ни одну команду распознавать огромное количество файлов, по-видимому потому что имена файлов содержат пробелы и/или unicode символы. Я не мог найти переключатели к decode/re-encode этими символами. Вместо этого например, если я копирую "файл name.xml", я получаю "*.xml" и ошибку сценария, которой файл не был найден для моего результата. Кто-либо знает настройки или команды, которые будут иметь дело с этими файлами?
РЕДАКТИРОВАНИЕ (добавляющий текущий код): Когда я работаю:
MacBookPro:Desktop$./script.sh
#!/bin/sh
dateVar=`date +%Y-%m-%d`
mkdir /Volumes/Documents/SMSarchive/$dateVar
cd /Volumes/Documents/SMSarchive/SMSdrop
for i in *.xml
do
cp $i /Volumes/Documents/SMSarchive/$dateVar/$dateVar-$i
done
Я получаю сообщение:
использование: CP [-R [-H |-L |-P]] [-fi |-n] [-pvX] source_file target_file cp [-R [-H |-L |-P]] [-fi |-n] [-pvX] source_file... target_directory
... когда это поражает команду "CP". Существует на самом деле больше к сценарию, который обрабатывает скопированные файлы далее. С "регулярным" именем файла, например, 'file.xml', все хорошо работает. Это - только файлы с пробелами или символы Unicode, где у меня есть проблемы.
Проблемы с пробелами указывают на недостаточное цитирование. Следующее неверно:
someprogram $file
Правильная версия выглядит следующим образом:
someprogram "$file"
следите за ошибками кода, когда $ i имеет значение null! Это может быть результатом фатальных ошибок rm -Rf!