passe le nom de fichier (avec un espace dans le chemin) en tant qu'argument d'une application Wine dans un script bash

2

Je veux lire une application de vin en passant un fichier comme argument. J'ai deux fichiers, avec le premier je n'ai pas de problème, mais quand il y a un espace dans le chemin, vin ne peut pas gérer l'adresse correctement voici ces deux fichiers:

/home/op/Doc/test.pdf

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

À partir de la ligne de commande, je peux lancer l'application avec les deux fichiers à l'aide de la commande suivante:

[/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"

mais quand je veux mettre cela dans un script (à lire plus tard avec un autre programme, ranger), je ne peux pas lancer le programme avec des fichiers de test. Le premier script fonctionne bien avec ceux qui n'ont pas d'espace dans l'adresse mais le second ne fonctionne pas et lance simplement l'application sans ouvrir le fichier pdf:

Script 1: travail sans espace:

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

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

Script 2: ne fonctionne dans aucun des cas

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

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

echo $Filename

Je ne peux pas comprendre où est le problème avec le script (par rapport aux commandes émises manuellement dans le shell). Le second script n'ouvre aucun type de fichier, avec ou sans espace dans l'adresse.

p.s. il y a aussi des scripts similaires ici mais ils souffrent du même problème, c’est-à-dire qu’ils ne peuvent pas non plus lancer le pdf avec un espace dans l’adresse.

SdidS
la source

Réponses:

1

Je vois plusieurs erreurs de frappe dans votre script qui pourraient l’empêcher de s’exécuter correctement:

#!/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
psimon
la source