Pages : 1
#1 Le 19/05/2014, à 13:13
- omnimax
problème de variable
salut,
comment faire pour avoir l'expression *.(pdf|PDF) dans une variable, j'ai testé ceci mais cela ne fonctionne pas
#!/bin/bash
CONTENANT="$HOME/reduire"
LISTING=$(ls "$CONTENANT"/*.(pdf|PDF))
echo "$LISTING"
exit 0
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#2 Le 19/05/2014, à 13:16
- Nolanux
Re : problème de variable
je ne suis pas un spécialiste, loin de là (pour tout te dire, je suis en phase d'apprentissage), mais essaie ceci :
LISTING=`ls "$CONTENANT"/*.(pdf|PDF)`
Pas démonter Numéro 5 !
"Short Circuit"
Hors ligne
#3 Le 19/05/2014, à 13:30
- omnimax
Re : problème de variable
merci mais cela ne fonctionne pas
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#4 Le 19/05/2014, à 13:44
- casperfr
Re : problème de variable
Bonjour,
il y a peut etre plus simple mais essais
#!/bin/bash
CONTENANT="$HOME/reduire"
LISTING=$(ls $CONTENANT/*.pdf $CONTENANT/*.PDF)
echo "$LISTING"
exit 0
EDIT :
en faite c'était tout simple
j'avais meme pas pris la peine d'essayé,
coila ce que je te propose
#!/bin/bash
CONTENANT="$HOME/reduire"
LISTING=$(ls $CONTENANT/*.[pP][dD][fF])
echo "$LISTING"
exit 0
Dernière modification par casperfr (Le 19/05/2014, à 13:51)
Hors ligne
#5 Le 19/05/2014, à 14:19
- omnimax
Re : problème de variable
Oui ton alternative fonctionne, mais j'aimerai comprendre pourquoi cette syntaxe n'est pas interprétée correctement alors qu'elle est tout à fait juste ?
*.(pdf|PDF)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#6 Le 19/05/2014, à 14:29
- Watael
Re : problème de variable
slaut,
cette syntaxe n'est pas interprétée correctement alors qu'elle est tout à fait juste
tout à fait juste
de quel point de vue ? d'une regex, oui; du shell, non.
par contre, tu pourrais employer le développement de chemins, et un tableau :
#!/bin/bash
shopt -s extglob nullglob
Listing=( $contenant/*.@(pdf|PDF) )
printf '%s\n' "${Listing[@]}"
NB: par convention, les noms de variables en majuscules sont réservés aux variables d'environnement, et ne devraient pas être utilisés dans un script.
Dernière modification par Watael (Le 19/05/2014, à 15:57)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 19/05/2014, à 15:32
- omnimax
Re : problème de variable
okok,
si je comprends bien, il y a les commandes que l'on rentre dans jun terminal = regex
et les commandes sous shell
juste une petite faute de frappe avec shopt
#!/bin/bash
shopt -s extglob nullglob
Listing=( $contenant/*.@(pdf|PDF) )
printf '%s\n' "${Listing[@]}"
par contre je n'ai strictement aucune idée sur la signification et l'emploi de
*.@
printf '%s\n'
${Listing[@]}
par hasard, tu pourrais me donner un bon nom de site où je pourrais apprendre ce genre de chose ?
merci pour tes conseils
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#8 Le 19/05/2014, à 15:56
- Watael
Re : problème de variable
si je comprends bien, il y a les commandes que l'on rentre dans jun terminal = regex
et les commandes sous shell
les regex s'emploient avec des commandes qui les comprennent : grep, sed, awk, perl.
bash les comprend, mais seulement dans les tests entre double crochets avec l'opérateur =~, dans la partie droite :
[[ $var =~ $regex ]]
le terminal est inerte, c'est une interface entre l'utilisateur et le shell. C'est le shell qui exécute les commandes que l'on tape.
l'important, ce n'est pas *.@, mais @(liste-motif) cf. man bash, puis /\@\(
l'ABS est très utile.
shopt, corrigé, merci.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 20/05/2014, à 08:44
- omnimax
Re : problème de variable
merci merci
ta source abs est vraiment très instructive...
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
Pages : 1