2

Я хочу запустить приложение Wine с передачей файла в качестве аргумента. У меня два файла, с первым у меня нет проблем, но когда в пути есть пробел, wine не может правильно обработать адрес. вот эти два файла:

/home/op/Doc/test.pdf

/home/op/Doc/test vs space.pdf

из командной строки я могу успешно запустить приложение с обоими файлами, используя эту команду:

[/home/op@box ~]: wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "z:Docs/test.pdf"

[/home/op@box ~]: wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "z:Docs/test vs space.pdf"

но когда я хочу поместить это в сценарий (чтобы потом посмотреть с другой программой, рейнджером), я не могу запустить программу с тестовыми файлами. Первый скрипт хорошо работает с теми, у которых нет места в адресе, но второй не работает и просто запускает приложение без открытого файла PDF:

Сценарий 1: работа без пробелов:

#!/bin/bash
Filename="z:${1//\//\\}"

wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename 

Сценарий 2: не работает ни в одном из случаев

#!/bin/bash
Filename="z:${1//\//\\}"
Filename='"'$Filename'"'

wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename 

echo $Filename

Я не могу понять, где что-то не так со сценарием (по сравнению с командами, выполняемыми вручную в оболочке). Второй сценарий не открывает файл любого типа, с пробелом в адресе или без него.

пса есть и подобные сценарии здесь , но они страдают от тех же проблем т.е. они не могут запустить PDF с пробелом в адресе либо.

1 ответ1

1

Я вижу несколько опечаток, ошибок в вашем скрипте, которые могут помешать его правильному выполнению:

#!/bin/bash
Filename="z:${1//\//\\}"
# Filename='"'$Filename'"'
# you can just leave this line, the triple quoting is unnecessary anyway

wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" "$Filename" # it's better to quote variables containing strings

echo "$Filename" # the same here

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .