mv файл / папка с пробелы в его имени не работают - LFTP

Обычно вы делаете наоборот: напишите специальное правило udev для определенного поставщика / продукта, которое создает известную символическую ссылку, которую вы можете использовать в своей следующей функции ". В Google есть множество руководств, как выглядит такое правило.

Или вы пишете свое приложение таким образом, что можете передавать путь к устройству в качестве аргумента.

Можно пройти путь к устройству в / sys / devices в обратном порядке и на каждом шаге проверять, является ли это устройство USB и имеет ли он конкретного поставщика / продукт. Вот что, например, udevadm info -a / dev / ttyUSB0 делает. Вам нужно сделать это таким образом, потому что это не обязательно USB-устройство, это может быть что угодно.

Если у вас есть , чтобы делать это «кодированием, а не командой», посмотрите исходный код udevadm и скопируйте все, что он делает. Это будет нетривиальное усилие, и его нельзя сильно упростить, поэтому я действительно предлагаю сделать это по-другому.

3
01.12.2016, 12:47
1 ответ

Эта строка:

lftp ftp://${userFTP}:${passFTP}@${servFTP} -e 'set ssl:verify-certificate false;set file:charset utf8;set ftp:charset utf8;cd downloads;mv "${fileName}" "${ftpDestinationPath}"'

Бит -eзаключен в одинарные кавычки, что означает, что оболочка не заменит ${fileName}или ${ftpDestinationPath }со значениями этих переменных.

Чтобы исправить это, используйте двойные кавычки:

.... -e "set ssl:verify-certificate false;set file:charset utf8;set ftp:charset utf8;cd downloads;mv '${fileName}' '${ftpDestinationPath}'"

Если это каким-то образом не удается (в настоящее время я не могу это проверить), используйте \"вместо каждой из одинарных кавычек выше.

0
27.01.2020, 21:37

Теги

Похожие вопросы