Обычно вы делаете наоборот: напишите специальное правило udev
для определенного поставщика / продукта, которое создает известную символическую ссылку, которую вы можете использовать в своей следующей функции ". В Google есть множество руководств, как выглядит такое правило.
Или вы пишете свое приложение таким образом, что можете передавать путь к устройству в качестве аргумента.
Можно пройти путь к устройству в / sys / devices
в обратном порядке и на каждом шаге проверять, является ли это устройство USB и имеет ли он конкретного поставщика / продукт. Вот что, например, udevadm info -a / dev / ttyUSB0
делает. Вам нужно сделать это таким образом, потому что это не обязательно USB-устройство, это может быть что угодно.
Если у вас есть , чтобы делать это «кодированием, а не командой», посмотрите исходный код udevadm
и скопируйте все, что он делает. Это будет нетривиальное усилие, и его нельзя сильно упростить, поэтому я действительно предлагаю сделать это по-другому.
Эта строка:
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}'"
Если это каким-то образом не удается (в настоящее время я не могу это проверить), используйте \"
вместо каждой из одинарных кавычек выше.