Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

En 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  smile

#!/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.

En 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