[debian-user] différences entre script & terminal ?

Le
j.seq
Bonjour la liste,

je suis perturbé par les différences d'interprétation des co=
mmandes dans un terminal et dans un script pour les noms de répertoire=
contenant des espaces :

exemple simplifié :
la commande en console
moi$ cp /home/mon_home/mon_fichier_source /home/mon_home/mon_rep destinati=
on
fonctionne.
de même que
moi$ cp "/home/mon_home/mon_fichier_source" "/home/mon_home/mon_rep destina=
tion"


mais
moi$ var1=/home/mon_home/mon_fichier_source
moi$ var2=/home/mon_home/mon_rep destination
moi$ cp $var1 $var2
me renvoie :
moi$ cp: la cible « destination » n'est pas un rép=
ertoire

j'ai, en vain, passé des heures à jouer avec des ", des ', des ` =

puis avec exec, eval, des redirections etc.

Bref, en panne d'inspiration, et dans l'espoir que quelqu'un me trouvera un=
e explication simple, je me tourne vers vous.


Cordialement,
Jerome


Une messagerie gratuite, garantie à vie et des services en plus, Ã=
§a vous tente ?
Je crée ma boîte mail www.laposte.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/247386.310581.1289751662791.JavaMail.www@wwinf8212
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
J
Le #22791211
Le dimanche 14 novembre 2010 à 17:21 +0100, j.seq a écrit :
Bonjour la liste,

je suis perturbé par les différences d'interprétation des commandes dans un terminal et dans un script pour les noms de répertoire contenant des espaces :

exemple simplifié :
la commande en console
moi$ cp /home/mon_home/mon_fichier_source /home/mon_home/mon_rep destination
fonctionne.
... de même que
moi$ cp "/home/mon_home/mon_fichier_source" "/home/mon_home/mon_rep destination"


... mais
moi$ var1=/home/mon_home/mon_fichier_source
moi$ var2=/home/mon_home/mon_rep destination
moi$ cp $var1 $var2
me renvoie :
moi$ cp: la cible « destination » n'est pas un répertoire

j'ai, en vain, passé des heures à jouer avec des ", des ', des ` ...
puis avec exec, eval, des redirections ... etc.

Bref, en panne d'inspiration, et dans l'espoir que quelqu'un me trouvera une explication simple, je me tourne vers vous.


Cordialement,
Jerome



Une lecture indispensable pour bash, dans les paquets en anglais :
abs-guide et en français sur http://abs.traduc.org/abs-fr/ [+❤]

désolé pour le RTFM ^^;

--
Jérôme -

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Jeremie Courreges-Anglas
Le #22791321
Le dimanche 14 novembre 2010 à 09:15:52, Jérôme a écrit :
Le dimanche 14 novembre 2010 à 17:21 +0100, j.seq a écrit :
> Bonjour la liste,
>
> je suis perturbé par les différences d'interprétation des commandes dans un terminal et dans un script pour les noms de répertoire contenant des espaces :
>
> exemple simplifié :
> la commande en console
> moi$ cp /home/mon_home/mon_fichier_source /home/mon_home/mon_rep destination
> fonctionne.
> ... de même que
> moi$ cp "/home/mon_home/mon_fichier_source" "/home/mon_home/mon_rep destination"
>
>
> ... mais
> moi$ var1=/home/mon_home/mon_fichier_source
> moi$ var2=/home/mon_home/mon_rep destination
> moi$ cp $var1 $var2
> me renvoie :
> moi$ cp: la cible « destination » n'est pas un répertoire
>
> j'ai, en vain, passé des heures à jouer avec des ", des ', des ` ...
> puis avec exec, eval, des redirections ... etc.



cp "$var1" "$var2"

Une lecture indispensable pour bash, dans les paquets en anglais :
abs-guide et en français sur http://abs.traduc.org/abs-fr/ [+❤]



Je me sens obligé de réagir, l'"Advanced Bash Scripting guide" est une _daube_
(non, ce n'est pas vendredi).
Ce guide est très ludique de part les exemples pratiques qu'il propose de
tester, il montre plein de petits scripts qui peuvent être de bons exemples
quand on ne sait pas où commencer. Il ne parle pas que de bash, mais montre
aussi parfois comment se servir d'outils géniaux comme bc.

Le problème est que au niveau de bash, le _langage_ , il est imprécis, il n'y
a jamais de discussion sur la /correction/ des scripts écrits, et pourtant
nombre d'entre eux devrait être réécrits. La plupart des scripts contiennent
des erreurs qui ne se voient pas au premier abord, comme des utilisations
de variables sans guillemets doubles, des for line in `cat fichier`; ...
des utilisations à tort et à travers d'eval et de expr. Nombreux sont ceux
à avoir voulu proposer des corrections, des solutions jugées meilleures...
Aucun d'entre eux n'a reçu de réponse.


Si vous ne savez pas trier le bon du mauvais, ce guide vous apprendra à écrire
des *BUGS*, pas des scripts.

Je vous recommande plutôt :

* http://mywiki.wooledge.org/BashGuide
* http://mywiki.wooledge.org/BashFAQ
* http://wiki.bash-hackers.org/doku.php
* Le canal irc #bash sur irc.freenode.net

"Oui mais ce sont des ressources en anglais !"

=> Mieux vaut apprendre quelque chose de correct en anglais
plutôt qu'apprendre des conn^Wbêtises en français.

--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key: 06A11494

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
j.seq
Le #22795801
Merci, j'ai trouvé mon bonheur chez
* http://mywiki.wooledge.org/BashGuide

la réponse à mon problème et plus encore.
Ah, les extensions de paramètres...

Cordialement,

--
Jérôme

Message du 14/11/10 21:53
De : "Jeremie Courreges-Anglas"
A :
Copie à :
Objet : Re: [debian-user] différences entre script & terminal ?


Le dimanche 14 novembre 2010 à 09:15:52, Jérôme a écr it :
> Le dimanche 14 novembre 2010 à 17:21 +0100, j.seq a écrit :
> > Bonjour la liste,
> >
> > je suis perturbé par les différences d'interprétation des commandes dans un terminal et dans un script pour les noms de répe rtoire contenant des espaces :
> >
> > exemple simplifié :
> > la commande en console
> > moi$ cp /home/mon_home/mon_fichier_source /home/mon_home/mon_rep des tination
> > fonctionne.
> > ... de même que
> > moi$ cp "/home/mon_home/mon_fichier_source" "/home/mon_home/mon_rep d estination"
> >
> >
> > ... mais
> > moi$ var1=/home/mon_home/mon_fichier_source
> > moi$ var2=/home/mon_home/mon_rep destination
> > moi$ cp $var1 $var2
> > me renvoie :
> > moi$ cp: la cible « destination » n'est pas un réperto ire
> >
> > j'ai, en vain, passé des heures à jouer avec des ", des ', des ` ...
> > puis avec exec, eval, des redirections ... etc.

cp "$var1" "$var2"

> Une lecture indispensable pour bash, dans les paquets en anglais :
> abs-guide et en français sur http://abs.traduc.org/abs-fr/ [+⠝¤]

Je me sens obligé de réagir, l'"Advanced Bash Scripting guide" est une _daube_
(non, ce n'est pas vendredi).
Ce guide est très ludique de part les exemples pratiques qu'il propo se de
tester, il montre plein de petits scripts qui peuvent être de bons e xemples
quand on ne sait pas où commencer. Il ne parle pas que de bash, mais montre
aussi parfois comment se servir d'outils géniaux comme bc.

Le problème est que au niveau de bash, le _langage_ , il est imprà ©cis, il n'y
a jamais de discussion sur la /correction/ des scripts écrits, et po urtant
nombre d'entre eux devrait être réécrits. La plupart des s cripts contiennent
des erreurs qui ne se voient pas au premier abord, comme des utilisations
de variables sans guillemets doubles, des for line in `cat fichier`; ...
des utilisations à tort et à travers d'eval et de expr. Nombreu x sont ceux
à avoir voulu proposer des corrections, des solutions jugées me illeures...
Aucun d'entre eux n'a reçu de réponse.


Si vous ne savez pas trier le bon du mauvais, ce guide vous apprendra à   écrire
des *BUGS*, pas des scripts.

Je vous recommande plutôt :

* http://mywiki.wooledge.org/BashGuide
* http://mywiki.wooledge.org/BashFAQ
* http://wiki.bash-hackers.org/doku.php
* Le canal irc #bash sur irc.freenode.net

"Oui mais ce sont des ressources en anglais !"

=> Mieux vaut apprendre quelque chose de correct en anglais
plutôt qu'apprendre des conn^Wbêtises en français.

--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key: 06A11494

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/






Une messagerie gratuite, garantie à vie et des services en plus, à §a vous tente ?
Je crée ma boîte mail www.laposte.net

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Publicité
Poster une réponse
Anonyme