![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... ) |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Futur Membre du Club
![]() |
Bonjour a tous, je patauge pour un truc qui doit etre simple:
Je récupère des variables 'nom prenom' qui contiennent donc un espace. Et je dois les passer en argument d'un script: Code :
./script.sh $variable Code :
#!/bin/bash mkdir $1 Si je fais Code :
./script.sh 'nom prenom' Alors que Code :
mkdir 'nom prenom' J'ai fait le test de mettre echo $1 dans mon script et ca affiche bien nom prenom Je pense donc que la variable $1 contient bien l'espace, ce doit être mkdir dans le script qui ne la gère pas. Alors que faire? Merci par avance de vos conseils Dernière modification par beral ; 28/08/2008 à 22h58 |
|
|
|
|
|
#2 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2006
Localisation: toulouse
Messages: 1 474
|
faire un espace est tjrs une betise pourquoi ?
tout simplement parceque rien ne garantie que 100% des programmes le gereront. donc il est interdit de faire des espaces ! si ça te pose des problemes un jour ne viens pas t'en plaindre ici tu peux forcer l'espace avec "\ " donc un espace précédé d'un backslash aussi ajoutes trois choses à ton script avant le mkdir : voir si $i est vide si oui quitter avant le mkdir : voir si le repertoir existe si oui quitter apres le mkdir : voir si le repertoire existe si oui quitter sinon informer de l'echec et quitter. Dernière modification par frp31 ; 29/08/2008 à 08h37 |
|
|
|
|
|
#3 (permalink) |
![]() Date d'inscription: juillet 2008
Localisation: Pays de Gex, Genève
Messages: 70
|
Il est aussi possible de mettre des apostrophes double autour de $1 dans le script, comme tu le fais sur la ligne de commande. Cela donne :
Code :
!#/bin/bash mkdir "$1" |
|
|
|
|
|
#4 (permalink) | ||
|
Membre éclairé
![]() Date d'inscription: mars 2002
Localisation: Martigny, VS, CH
Âge: 23
Messages: 329
|
Citation:
Citation:
Je penses que tester la valeur de retour de 'mkdir' est suffisant comme test, mais c'est une bonne idée de faire ce test.
__________________
Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/ |
||
|
|
|
|
|
#5 (permalink) | |
![]() Date d'inscription: juillet 2008
Localisation: Pays de Gex, Genève
Messages: 70
|
Citation:
Mais dès qu'il va s'agir d'écrire des shell scripts (on en fait encore beaucoup) ou même de taper quelques commandes sur la ligne de commande d'un shell, les soucis vont arriver. L'espace y est utilisé comme séparateur d'arguments. Rien que le couple find/xargs ne fonctionne pas bien dès qu'il y a des espaces dans les noms de fichiers. Une solution serait peut-être d'utiliser un caractère Unicode qui serait un caractère d'espacement mais qui ne serait pas 0x20. Il y a l'espace insécable 0xA0, pourquoi ne pas l'utiliser. |
|
|
|
|
|
|
#6 (permalink) | |
|
Membre éclairé
![]() Date d'inscription: mars 2002
Localisation: Martigny, VS, CH
Âge: 23
Messages: 329
|
Citation:
Et je ne mets pas d'interface graphique sur mes serveurs.
__________________
Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/ |
|
|
|
|
|
|
#7 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2006
Localisation: toulouse
Messages: 1 474
|
rares sont les machines par défaut en utf-8 dans la réalité tous unix confondus...dans la réalité
et les scripts sont souvent surtout si il viennent d'un éditeur applicatif complétement bidons et ecris à la va-vite et les emmerdes commencent... croies moi quand je dis qu'il est interdit de faire des espaces pour par foutre la merde, je parle d'experience et encore c'est juste la façon poli de dire qu'il faut tuer sans procés tous les fils de $*# de leur race de $*1§% à la $# qui en font... ![]() en 8 ans que suis en exploit/admin chez les clients j'ai jamais vu un cas ou un répertoir contenant un espace n'a pas un jour finni par foutre la merde en production. ![]() j'ai bien dit jamais. ![]() par contre pour les programmes ou scripts provenants des études ou des autres admin là oui d'accord c'est l'inverse j'en ai vu mais jamais vu un poser problème...
Dernière modification par frp31 ; 29/08/2008 à 13h54 Motif: fautes... je suis pas bien reveillé |
|
|
|
|
|
#8 (permalink) | |||
|
Membre éclairé
![]() Date d'inscription: mars 2002
Localisation: Martigny, VS, CH
Âge: 23
Messages: 329
|
Citation:
Citation:
Citation:
__________________
Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/ |
|||
|
|
|
|
|
#10 (permalink) |
|
Membre éclairé
![]() Date d'inscription: mars 2002
Localisation: Martigny, VS, CH
Âge: 23
Messages: 329
|
Ouais, mais même en caleçon, c'est le boss !
__________________
Mon wiki (on y parle Debian principalement) : http://www.tchetch.net/ |
|
|
|
![]() |
![]() |
||
Mkdir avec variable contenant un espace
|
||
| Outils de la discussion | |
|
|