Я пытаюсь вызвать команду scanimage (из инструмента SANE ) изнутри cygwin, хотя я думаю, что моя проблема связана с общим побегом, поэтому, возможно, то, что я вызываю, не имеет значения. Тем не мение...
Мазь в том, что мне нужно вызвать указанную команду из командной строки Windows (так называемый bash.exe), и я не могу понять, как правильно передать аргументы. Вот пример:
Если я запускаю терминал cygwin, я могу запустить эту команду, и она прекрасно работает:
scanimage -d 'epson2:libusb:bus-0:\\.\libusb0-0001--0x04b8-0x012c' -y 20 --format tiff > out.tiff
Отлично, но когда я вызываю обычную командную строку и вставляю это (исходная команда, но внутри бита -c ""):
"c:\cygwin\bin\bash.exe" --login -c "scanimage -d 'epson2:libusb:bus-0:\\.\libusb0-0001--0x04b8-0x012c' -y 20 --format tiff > out.tiff"
Я получаю эту ошибку:
scanimage: открыть устройство epson2: libusb: bus-0:.\libusb0-0001--0x04b8-0x012c не удалось: неверный аргумент
Это кажется мне очень странным, так как описание аргумента в ошибке выглядит так, как будто оно имеет правильное значение (если оно не прошло правильно, я бы ожидал, что оно будет '' или что-то в этом роде, но, возможно, это только я ).
Кстати, если я откажусь от аргумента -d и сделаю это
"c:\cygwin\bin\bash.exe" --login -c "scanimage -y 20 --format tiff > out.tiff"
все хорошо - за исключением того, что, если я подключу другой сканер, у меня будет 50/50 шанс, что он будет сканировать не тот, поэтому опускание аргумента на самом деле не вариант.
Я подумал об одном способе сделать это: создать bsh-файл с помощью команды in, а затем просто запустить этот файл из bash.exe ("c:\cygwin\bin\bash.exe" --login scan.bsh, где scan.bsh содержит вышеупомянутую команду) но это, кажется, немного неприглядно.
Поэтому мой вопрос заключается в том, как я могу создать командную строку для bash.exe таким образом, чтобы в этом случае аргумент устройства был правильно передан, и сканер сканировал мои данные?