ファイルを引数として渡してワインアプリをローンチしたい。私は2つのファイルを持っていますが、最初のファイルは問題ありませんが、パスにスペースがあると、wineはアドレスを適切に処理できません。これらの2つのファイルは次のとおりです。
/ 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"
しかし、これをスクリプトに入れたい場合(後で別のプログラム、レンジャーで実行するため)、テストファイルを使用してプログラムを起動することはできません。最初のスクリプトは、アドレスにスペースがないスクリプトでうまく機能しますが、2番目のスクリプトは機能せず、PDFファイルを開かずにアプリをランチするだけです。
#!/bin/bash
Filename="z:${1//\//\\}"
wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename
#!/bin/bash
Filename="z:${1//\//\\}"
Filename='"'$Filename'"'
wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename
echo $Filename
スクリプトのどこが間違っているのかわかりません(シェルで手動で発行されたコマンドと比較して)。 2番目のスクリプトは、アドレスにスペースがある場合とない場合で、どのタイプのファイルも開きません。
p.s.同様のスクリプトもあります ここ しかし、同じ問題が発生します。つまり、アドレスにスペースを入れてPDFを起動することもできません。
スクリプトにいくつかのタイプミスやエラーがあり、スクリプトを正しく実行できない可能性があります。
#!/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