2017-07-19 1 views
0

Je veux invoquer C:\Program Files (x86)\Leela\Leela0100.exe et transmettre un nom de fichier:Comment faire pour échapper un espace dans un chemin sur msys2?

#!/bin/bash -x 

BASE="c:/Users/supreme" 
DROPBOX="$BASE/Dropbox" 

DOWNLOADS="$BASE/Downloads" 

cd $DOWNLOADS 
SGF=`ls -th *.sgf | head -1` 

GAMES="$DROPBOX/Baduk/Games" 

mv $SGF $GAMES 

LEELA='c://Program Files (x86)//Leela//Leela0100.exe' 

cd $GAMES 
$LEELA $SGF 

Cependant, invoquant mon script via bash -x toleela.sh sous MSYS2 donne l'erreur:

c:\Users\supreme\Dropbox\Programming>bash -x toleela.sh 
bash -x toleela.sh 
+ BASE=c:/Users/supreme 
+ DROPBOX=c:/Users/supreme/Dropbox 
+ DOWNLOADS=c:/Users/supreme/Downloads 
+ cd c:/Users/supreme/Downloads 
++ ls -th '9001447-269-Winggo-princepawn (1).sgf' 9429961-080-princepawn-RyanBLee.sgf 
++ head -1 
+ SGF=9429961-080-princepawn-RyanBLee.sgf 
+ GAMES=c:/Users/supreme/Dropbox/Baduk/Games 
+ mv 9429961-080-princepawn-RyanBLee.sgf c:/Users/supreme/Dropbox/Baduk/Games 
+ LEELA='c://Program Files (x86)//Leela//Leela0100.exe' 
+ cd c:/Users/supreme/Dropbox/Baduk/Games 
+ c://Program Files '(x86)//Leela//Leela0100.exe' 9429961-080-princepawn-RyanBLee.sgf 
toleela.sh: line 18: c://Program: No such file or directory 

Répondre

3

Comme nous l'avons déjà souligné à vous sur IRC, il vous manque des guillemets autour des extensions de variables sur la dernière ligne de votre script (également sur d'autres lignes).

"$LEELA" "$SGF" 

Les doubles barres obliques (//) sur votre chemin exécutable ne sont pas bonnes. Utilisez une barre oblique unique (/) ou une double barre oblique inverse ( \\) à la place. EDIT: Les barres obliques inverses sont plus compliquées, alors tenez-vous à celles en avant.

+0

[seule barre oblique fonctionne] (https://gist.github.com/metaperl/d8fe4887d202cd8b2c04709049b9e0de) –