Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un espace dans le path et l'execution devient impossible

7 réponses
Avatar
jeanpierre.salmon
J'aimerai stocker dans une variable le nom et le chemin d'un programme
puis ex=E9cuter la commande stock=E9e dans cette variable.
Le probl=E8me =E9tant que le chemin peut comporter des nom de r=E9pertoire
avec des espaces le tout en csh, exemple:

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

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

Je v=E9rifie que la commande est bien copi=E9e
>/home/roger/mes' 'prog/echo titi
titi

Soit test2.csh:
#######################
#!/bin/csh
set mavar=3D"/home/roger /mes' 'prog/echo"
$mavar titi
exit
#######################
L'ex=E9cution 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=E9cution?
Cordialement,
Jp

PS: n'h=E9sitez pas =E0 me recommander d'autres forum : je sais pas s'il
en existe d'autres sur lesquels j'obtiendrai des r=E9ponses

7 réponses

Avatar
Thierry B.
--{ 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.

Avatar
jeanpierre.salmon
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

Avatar
Thierry B.
--{ 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.

Avatar
jeanpierre.salmon
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
Avatar
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 ?


Avatar
jeanpierre.salmon
On 9 avr, 14:52, Alain Montfranc wrote:
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




Avatar
jeanpierre.salmon
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