ファイル名(パスにスペースを含む)をbashスクリプトのワインアプリに引数として渡す


2

引数としてファイルを渡してワインアプリを探し出したいです。ファイルは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ファイルを開かずにアプリを起動します。

スクリプト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

スクリプトのどこがおかしいのかわかりません(シェルで手動で発行されたコマンドと比較して)。2番目のスクリプトは、アドレスのスペースの有無にかかわらず、どのタイプのファイルも開きません。

ps ここにも同様のスクリプトがありますが、それらは同じ問題に悩まされています。つまり、アドレスにスペースを入れてpdfを起動することもできません。

回答:


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.