#1 Le 10/08/2012, à 17:09
- OL9245
[résolu] [débutant] problemes avec le ~ dans les scripts
Bonjour,
j'écris un script pour traiter des fichiers qui correspondent à un pattern donné.
le premier argument est le pattern des fichiers à traiter, par exemple
set '~/toto/STL_[0-9]{4}\.tiff'
Je réccupère le chemin et le nom avec :
ds=$( dirname $1 )
bs=$( basename $1 )
je veux récupérer la liste de ces fichiers pour le traiter. A la console, la commande qui va bien est (au choix) :
find ~/toto/ -regextype 'posix-extended' -regex ".*$bs"
find /home/$USER/toto/ -regextype 'posix-extended' -regex ".*$bs"
pour se concentrer sur le problème, simplifions : voila ce qui marche à la console :
find ~/toto/
find /home/$USER/toto/
Dans mon script, le répertoir est dans la variable $ds (cf ci-dessus) et c'est là que ça coince. rien de ce qui suit ne marche :
ds="~/toto/" ; find $ds
ds='~/toto/' ; find $ds
ceci marche car, sans les guillemets, le chemin a été interprété en /home/olivier/toto/, sauf que ça ne me sert à rien dans mon script !
ds=~/toto/ ; find $ds
En résumé, j'ai besoin de la formule magique qui complète mon script :
set '~/toto' #point de départ obligé. C'est l'argument du script
ds=formule-magique
find $ds
Merci de votre aide. Ca fait depuis ce matin que je creuse. Là je suis au caillou !
Dernière modification par OL9245 (Le 12/08/2012, à 11:23)
La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)
Hors ligne
#2 Le 10/08/2012, à 18:40
- Watael
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
salut,
le tilde n'est pas développé entre guillemets (simples ou doubles).
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 10/08/2012, à 18:52
- Sciensous
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
essaye $HOME au lieu de ~
je ne sais pas pourquoi mais ça marche mieux
ps: peux-tu me détailler l'utilisation de set ?
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
En ligne
#4 Le 10/08/2012, à 18:59
- xavier4811
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
Bonjour,
si ça peut t'aider, t'a oublié une variante " ' & ` (Alt gr+è)
:~$ echo "~/"
~/
:~$ echo '~/'
~/
:~$ echo `~/`
-bash: /home/xavier/ : est un dossier
Hors ligne
#5 Le 10/08/2012, à 19:07
- Sciensous
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
xavier4811: exact, je n'avais pas trop fait attention: les ' (sous la touche 4) n'interprète pas les commandes , contrairement à "
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
En ligne
#6 Le 10/08/2012, à 19:53
- OL9245
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
Merci des suggestions.
Finalement, j''ai trouvé ça qui marche :
ds=${ds/'~'/$HOME}
J'aimerai bien comprendre quand même la manière adhoc qui permet, ou pas, de développer le contenu d'une variable.
et pourquoi find, ls et compagnie acceptent comme chemin des variables commençant par /home/machin et pas par ~
@scinensous : set a b c positionne les variables $1 (=a) $2 (=b) et $3 (c).
en tête d'un script en cours de déboguage, ça permet de mettre en dur les arguments de test du script.
dans le corps d'un script, ça permet d'utiliser "for i" au lieu de "for i in truc"
La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)
Hors ligne
#7 Le 10/08/2012, à 20:25
- Watael
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
une variable ($foo, $bar), ou un paramètre positionnel ($1, $2) ne sont pas développés entre guillemets simples.
le tilde (comme l'astérisque) n'est pas développé entre guillemets (simples ou doubles).
c'est tout.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 12/08/2012, à 11:22
- OL9245
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
Merci à Watael pour l'explication.
les ~ est donc à considérer comme une espèce de variable ?
en touts cas j'ai compris :
ceci ne marche pas
ls '~'
et ceci marche
ls '/home/olivier/'
cqft
La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)
Hors ligne
#9 Le 12/08/2012, à 11:44
- compte supprimé
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
A tout hasard : http://abs.traduc.org/abs-fr/
#10 Le 12/08/2012, à 12:39
- OL9245
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
merci pour le lien.
Je l'ai déjà parcourru. C'est très touffu.
J'ai déjà pris mes repères dans Introduction à la programmation shell en bash qui est plus basic (une centaine de pages). C'était le volume que je pouvais espérer avaler plus ou moins en détail quand j'ai débuté. Son PDF est quasiment toujours ouvert dès que je bashe
La farine tombée par terre ne se ramasse pas d'une seule main (proverbe burkinabé)
Hors ligne
#11 Le 12/08/2012, à 16:23
- Watael
Re : [résolu] [débutant] problemes avec le ~ dans les scripts
les ~ est donc à considérer comme une espèce de variable ?
je vois ça plutôt comme un caractère spécial.
Il y a tout un paragraphe dans la page man : Développement du tilde
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne