Espérons que cela devrait être simple ... Voici mon fichier test.sh:Comment gérer des espaces dans une variable dans un script shell bash?
#!/bin/bash
patch_file="/home/my dir/vtk.patch"
cmd="svn up \"$patch_file\""
$cmd
Notez l'espace dans « mon répertoire ». Quand je l'exécute,
$ ./test.sh
Skipped '"/home/my'
Skipped 'dir/vtk.patch"'
Je n'ai aucune idée de la façon d'adapter l'espace dans la variable et d'exécuter la commande. Mais l'exécution de ce qui suit sur le shell bash fonctionne sans problème.
$ svn up "/home/my dir/vtk.patch" #WORKS!!!
Toutes les suggestions seront grandement appréciées! J'utilise le bash de cygwin sur Windows.
Pourquoi voulez-vous placer la commande dans une variable? Pourquoi ne pas simplement exécuter la commande directement? –
@Dennis - Le répertoire personnel du fichier patch est détecté lors de l'exécution. Un autre script détecte le répertoire personnel comme "/ home/mon dir /" et le passe comme argument à ce script. Ce script ajoute "vtk.patch" au répertoire home détecté et fait un svn up sur le fichier patch. – Bala
Veuillez voir ["J'essaie de placer une commande dans une variable, mais les cas complexes échouent toujours!"] (Http://mywiki.wooledge.org/BashFAQ/050 "BashFAQ/050"). –