Un espace dans le path et l'execution devient impossible

Le
jeanpierre.salmon
J'aimerai stocker dans une variable le nom et le chemin d'un programme
puis exécuter la commande stockée dans cette variable.
Le problème étant que le chemin peut comporter des nom de répertoire
avec des espaces le tout en csh, exemple:

Soit test1.csh:
#######################
#!/bin/csh
# test1.csh
set mavar="echo"
$mavar titi
exit
#######################
L'exécution de test1.csh fonctionne bien
>test1
titi

Maintenant je copie la commande echo
>cp /usr/bin/echo /home/roger/mes' 'prog/echo

Je vérifie que la commande est bien copiée
>/home/roger/mes' 'prog/echo titi
titi

Soit test2.csh:
#######################
#!/bin/csh
set mavar="/home/roger /mes' 'prog/echo"
$mavar titi
exit
#######################
L'exécution de test2.csh provoque l'erreur suivante:
>test2
/home/roger/mes': Command not found.

Que puis je faire avec des quotes, double quotes ou des guillemets
pour prendre en compte l'espace dans le chemin lors de l'exécution?
Cordialement,
Jp

PS: n'hésitez pas à me recommander d'autres forum : je sais pas s'il
en existe d'autres sur lesquels j'obtiendrai des réponses
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry B.
Le #2627871
--{ a plopé ceci: }--

Que puis je faire avec des quotes, double quotes ou des guillemets
pour prendre en compte l'espace dans le chemin lors de l'exécution?


:/tmp$ ls foo bar
echo
:/tmp$ cat e.csh
#!/bin/csh
set mavar=foo bar/echo
"$mavar" titi
:/tmp$ ./e.csh
titi
:/tmp$

--
Pourquoi le Poulet a traversé la rue ?
* Heisenberg : Nous ne sommes pas sûrs du côté duquel était la poule,
mais elle bougeait très vite.

jeanpierre.salmon
Le #2627861
Bonjour Thierry,

Désolé ça ne marche pas :

%%%%%%%%%%%%%%%%%%%%%%%%%%
#!/bin/csh
# test.csh
set coucou="echo sqd"
set coucou="/home/roger/tex/temp/un deux/echo"
"$coucou" sqd
exit
%%%%%%%%%%%%%%%%%%%%%%%%%%
test.csh


/home/roger/tex/temp/un deux/echo: Command not found.

JP

Thierry B.
Le #2635971
--{ a plopé ceci: }--

set coucou="/home/roger/tex/temp/un deux/echo"
^ ^ ^


/home/roger/tex/temp/un deux/echo: Command not found.
^^


C'est soit les " soit les , mais pas les deux...

--
Non. Ça avait été fufé lors de l'AAD1.
Personne n'ayant été capable de présenter des arguments d'opposition sur le
fond, ce sont donc les mouches qui en ont fait les frais une nouvelle fois.

jeanpierre.salmon
Le #2639141
Merci !!! D'avoir mis le doigt dessus je croyait avoir tester avec
soit l'un soit l'autre ca marche parfaitement:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#!/bin/csh
set coucou=/cygdrive/c/Program Files/MiKTeX 2.5/miktex/bin/latex
set coucou="/cygdrive/c/Program Files/MiKTeX 2.5/miktex/bin/latex"
set coucou=/cygdrive/c/Program' 'Files/MiKTeX' '2.5/miktex/bin/latex
set coucou=/cygdrive/c/Program" "Files/MiKTeX" "2.5/miktex/bin/latex
set coucou='/cygdrive/c/Program Files/MiKTeX 2.5/miktex/bin/latex'
"$coucou" sqd
exit
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Il faut bien faire attention en utilisant la variable aprés de
l'encapsuler entre guillemets afin de bien conserver les espaces!

Merci,
jp
Alain Montfranc
Le #2639121
a écrit
Bonjour Thierry,

Désolé ça ne marche pas :

%%%%%%%%%%%%%%%%%%%%%%%%%%
#!/bin/csh
# test.csh
set coucou="echo sqd"
set coucou="/home/roger/tex/temp/un deux/echo"
"$coucou" sqd
exit
%%%%%%%%%%%%%%%%%%%%%%%%%%
test.csh


/home/roger/tex/temp/un deux/echo: Command not found.

JP


As tu copié "echo" là où tu dis qu'il est ?


jeanpierre.salmon
Le #2639101
On 9 avr, 14:52, Alain Montfranc
a écrit





Bonjour Thierry,

Désolé ça ne marche pas :

%%%%%%%%%%%%%%%%%%%%%%%%%%
#!/bin/csh
# test.csh
set coucou="echo sqd"
set coucou="/home/roger/tex/temp/un deux/echo"
"$coucou" sqd
exit
%%%%%%%%%%%%%%%%%%%%%%%%%%
test.csh


/home/roger/tex/temp/un deux/echo: Command not found.

JP


As tu copié "echo" là où tu dis qu'il est ?- Masquer le texte des me ssages précédents -

- Afficher le texte des messages précédents -


Oui !
cp /usr/bin/echo /home/roger/mes' 'prog/echo




jeanpierre.salmon
Le #2641691
Merci !!! D'avoir mis le doigt dessus je croyais avoir déjà testé
cela !
En tous cas uniquement avec les guillemets ou uniquement avec
l'antislash ca marche

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#!/bin/csh
set coucou="/home/roger/mes prog/echo"
set coucou='/home/roger/mes prog/echo'
set coucou=/home/roger/mes" "prog/echo
set coucou=/home/roger/mes' 'prog/echo
set coucou=/home/roger/mes prog/echo
"$coucou" toto
set coucou="/home/roger/mes prog/echo"
set coucou='/home/roger/mes prog/echo'
eval "$coucou" titi
exit
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Il faut bien faire attention en utilisant la variable aprés de
l'encapsuler entre guillemets afin de bien conserver les espaces!


Merci,
jp
Publicité
Poster une réponse
Anonyme