[script][bash] passer des arguments du type "toto titi"
6 réponses
Thomas Harding
Le script suivant ne marche pas si on lui passe en argument "toto titi"
J'ai bien essayé de quoter : ...'$(echo $1 | sed -e 's/ /\\ /g')'...,
mais cela ne marche plus ni pour "toto titi" ni pour "toto"
Bref, si quelqu'un a la solution...
#!/bin/bash
i=0
until [ -z "$1" ]
do
case $1 in
-*) OPTS[$i]= "$1" ; (( i += 1 )) ; shift ;;
*) OPTS[$i]="-name $(echo $1 | sed -e 's/ /\\ /g')"
(( i += 1 )); shift ;;
esac
done
echo ${OPTS[@]}
find . ${OPTS[@]}
--
Thomas Harding
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thomas Harding
Dans l'article , Thomas Harding a écrit :
Le script suivant ne marche pas si on lui passe en argument "toto titi"
Bref, si quelqu'un a la solution...
#!/bin/bash i=0 until [ -z "$1" ] do case $1 in -*) OPTS[$i]= "$1" ; (( i += 1 )) ; shift ;; *) OPTS[$i]="-name$(echo $1 | sed -e 's/ / /g')" (( i += 1 )); shift ;; esac done echo ${OPTS[@]} IFS='' find . ${OPTS[@]}
-- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Dans l'article <r6bacd.e24.ln@127.0.0.1>, Thomas Harding a écrit :
Le script suivant ne marche pas si on lui passe en argument "toto titi"
Bref, si quelqu'un a la solution...
#!/bin/bash
i=0
until [ -z "$1" ]
do
case $1 in
-*) OPTS[$i]= "$1\" ; (( i += 1 )) ; shift ;;
*) OPTS[$i]="-name\$(echo $1 | sed -e 's/ / /g')"
(( i += 1 )); shift ;;
esac
done
echo ${OPTS[@]}
IFS=''
find . ${OPTS[@]}
--
Thomas Harding
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Le script suivant ne marche pas si on lui passe en argument "toto titi"
Bref, si quelqu'un a la solution...
#!/bin/bash i=0 until [ -z "$1" ] do case $1 in -*) OPTS[$i]= "$1" ; (( i += 1 )) ; shift ;; *) OPTS[$i]="-name$(echo $1 | sed -e 's/ / /g')" (( i += 1 )); shift ;; esac done echo ${OPTS[@]} IFS='' find . ${OPTS[@]}
-- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Thomas Harding
Dans l'article , Thomas Harding a écrit :
Dans l'article , Thomas Harding a écrit :
Le script suivant ne marche pas si on lui passe en argument "toto titi"
Bref, si quelqu'un a la solution...
#!/bin/bash i=0 until [ -z "$1" ] do
OPTS[$i]= "$1" ; (( i += 1 )) ; shift
done echo ${OPTS[@]} IFS='' find . ${OPTS[@]}
-- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Dans l'article <8pdacd.5i4.ln@127.0.0.1>, Thomas Harding a écrit :
Dans l'article <r6bacd.e24.ln@127.0.0.1>, Thomas Harding a écrit :
Le script suivant ne marche pas si on lui passe en argument "toto titi"
Bref, si quelqu'un a la solution...
#!/bin/bash
i=0
until [ -z "$1" ]
do
OPTS[$i]= "$1" ; (( i += 1 )) ; shift
done
echo ${OPTS[@]}
IFS=''
find . ${OPTS[@]}
--
Thomas Harding
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Le script suivant ne marche pas si on lui passe en argument "toto titi"
Bref, si quelqu'un a la solution...
#!/bin/bash i=0 until [ -z "$1" ] do
OPTS[$i]= "$1" ; (( i += 1 )) ; shift
done echo ${OPTS[@]} IFS='' find . ${OPTS[@]}
-- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Daniel Dechelotte
Thomas,
Thomas Harding a écrit :
Dans l'article , Thomas Harding a écrit : > Dans l'article , Thomas Harding a écrit : >> Le script suivant ne marche pas si on lui passe en argument "toto >titi"
[...]
Que se passe-t-il ? Pourquoi plusieurs versions de ce script sans commentaires ? Sont-ce des pistes qui n'aboutissent pas ? ou bien des solutions auxquelles tu trouves a redire ?
Etant regulierement confronte a ce type de probleme, j'aimerais suivre ce fil, mais je n'y comprends rien et je ne vois pas ce que je pourrais reutiliser dans mes propres scripts.
-- Daniel Déchelotte http://yo.dan.free.fr/
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Thomas,
Thomas Harding a écrit :
Dans l'article <8pdacd.5i4.ln@127.0.0.1>, Thomas Harding a écrit :
> Dans l'article <r6bacd.e24.ln@127.0.0.1>, Thomas Harding a écrit :
>> Le script suivant ne marche pas si on lui passe en argument "toto
>titi"
[...]
Que se passe-t-il ? Pourquoi plusieurs versions de ce script sans
commentaires ? Sont-ce des pistes qui n'aboutissent pas ? ou bien des
solutions auxquelles tu trouves a redire ?
Etant regulierement confronte a ce type de probleme, j'aimerais suivre
ce fil, mais je n'y comprends rien et je ne vois pas ce que je pourrais
reutiliser dans mes propres scripts.
--
Daniel Déchelotte
http://yo.dan.free.fr/
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Dans l'article , Thomas Harding a écrit : > Dans l'article , Thomas Harding a écrit : >> Le script suivant ne marche pas si on lui passe en argument "toto >titi"
[...]
Que se passe-t-il ? Pourquoi plusieurs versions de ce script sans commentaires ? Sont-ce des pistes qui n'aboutissent pas ? ou bien des solutions auxquelles tu trouves a redire ?
Etant regulierement confronte a ce type de probleme, j'aimerais suivre ce fil, mais je n'y comprends rien et je ne vois pas ce que je pourrais reutiliser dans mes propres scripts.
-- Daniel Déchelotte http://yo.dan.free.fr/
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Thomas Harding
Dans l'article , Daniel Dechelotte a écrit :
Que se passe-t-il ? Pourquoi plusieurs versions de ce script sans commentaires ? Sont-ce des pistes qui n'aboutissent pas ? ou bien des solutions auxquelles tu trouves a redire ?
La première solution était fausse, la deuxième était la bonne.
Etant regulierement confronte a ce type de probleme, j'aimerais suivre ce fil, mais je n'y comprends rien et je ne vois pas ce que je pourrais reutiliser dans mes propres scripts.
J'avoue que je commence à connaître par coeur la page man de bash, à force de la consulter :) Du coup, je pensais donner un exemple simple de ce que je voulais faire...
(les guillemets sont fictifs, mais cela donne le résultat escompté).
J'ai fini par le découvrir dans le document
« Advanced Bash-Scripting Guide »
mon but était de créer un front-end à zophImport, qu'on peut télécharger à l'adresse suivante : <http://tom.harding.free.fr/chargephotos.php> (le code est directement visible sur la page, ~ 250 lignes)
la première boucle qui extrait $@ est destinée à implémenter une option "--help".
J'espère que cette fois ci je suis assez clair :) -- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Dans l'article <20050729122407.1436b9ea.maitre_yodan@fr.club-internet.invalid>,
Daniel Dechelotte a écrit :
Que se passe-t-il ? Pourquoi plusieurs versions de ce script sans
commentaires ? Sont-ce des pistes qui n'aboutissent pas ? ou bien des
solutions auxquelles tu trouves a redire ?
La première solution était fausse, la deuxième était la bonne.
Etant regulierement confronte a ce type de probleme, j'aimerais suivre
ce fil, mais je n'y comprends rien et je ne vois pas ce que je pourrais
reutiliser dans mes propres scripts.
J'avoue que je commence à connaître par coeur la page man de bash, à
force de la consulter :)
Du coup, je pensais donner un exemple simple de ce que je voulais
faire...
(les guillemets sont fictifs, mais cela donne le résultat escompté).
J'ai fini par le découvrir dans le document
« Advanced Bash-Scripting Guide »
mon but était de créer un front-end à zophImport, qu'on peut télécharger
à l'adresse suivante :
<http://tom.harding.free.fr/chargephotos.php>
(le code est directement visible sur la page, ~ 250 lignes)
la première boucle qui extrait $@ est destinée à implémenter une option
"--help".
J'espère que cette fois ci je suis assez clair :)
--
Thomas Harding
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Que se passe-t-il ? Pourquoi plusieurs versions de ce script sans commentaires ? Sont-ce des pistes qui n'aboutissent pas ? ou bien des solutions auxquelles tu trouves a redire ?
La première solution était fausse, la deuxième était la bonne.
Etant regulierement confronte a ce type de probleme, j'aimerais suivre ce fil, mais je n'y comprends rien et je ne vois pas ce que je pourrais reutiliser dans mes propres scripts.
J'avoue que je commence à connaître par coeur la page man de bash, à force de la consulter :) Du coup, je pensais donner un exemple simple de ce que je voulais faire...
(les guillemets sont fictifs, mais cela donne le résultat escompté).
J'ai fini par le découvrir dans le document
« Advanced Bash-Scripting Guide »
mon but était de créer un front-end à zophImport, qu'on peut télécharger à l'adresse suivante : <http://tom.harding.free.fr/chargephotos.php> (le code est directement visible sur la page, ~ 250 lignes)
la première boucle qui extrait $@ est destinée à implémenter une option "--help".
J'espère que cette fois ci je suis assez clair :) -- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Je vous livre la version « qui marche », c'est à dire qui passe à la commande les arguments passés au script (je viens de le vérifier) :
####################### i=0 IFS='' until [ -z "$1" ] do case $1 in -h|--help) echo -e "usage :n$(basename $0) zophImport Options" exit 0 ;; -*) OPTS[$i]="$1" ; (( i += 1 )) ; shift ;; *) OPTS[$i]=""$1"" ; (( i += 1 )) ; shift ;; esac done IFS=" " ...etc
IFS='' # la commande qui suit fait une seule ligne : echo umask 0002 ; echo $MAIL ; zophImport ${OPTS[@]} --album "$ALBUM" --category "$CATEGORY" $DATEDIR --path $DIRECTORY ${PHOTOS_ROOT}/incoming/$i/* ; rmdir ${PHOTOS_ROOT}/incoming/$i | at now + 1 minutes 2>/dev/null
IFS=' ' ...etc #####################
Si quelqu'un a une solution moins tirée par les cheveux, je suis preneur... -- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Dans l'article <99sdcd.3f6.ln@127.0.0.1>, Thomas Harding a écrit :
Je vous livre la version « qui marche », c'est à dire qui passe à la
commande les arguments passés au script (je viens de le vérifier) :
#######################
i=0
IFS=''
until [ -z "$1" ]
do
case $1 in
-h|--help)
echo -e "usage :n$(basename $0) zophImport Options"
exit 0 ;;
-*) OPTS[$i]="$1" ; (( i += 1 )) ; shift ;;
*) OPTS[$i]=""$1"" ; (( i += 1 )) ; shift ;;
esac
done
IFS="
"
...etc
IFS=''
# la commande qui suit fait une seule ligne :
echo umask 0002 ; echo $MAIL ; zophImport ${OPTS[@]} --album "$ALBUM"
--category "$CATEGORY" $DATEDIR
--path $DIRECTORY ${PHOTOS_ROOT}/incoming/$i/* ;
rmdir ${PHOTOS_ROOT}/incoming/$i | at now + 1 minutes 2>/dev/null
IFS='
'
...etc
#####################
Si quelqu'un a une solution moins tirée par les cheveux, je suis
preneur...
--
Thomas Harding
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Je vous livre la version « qui marche », c'est à dire qui passe à la commande les arguments passés au script (je viens de le vérifier) :
####################### i=0 IFS='' until [ -z "$1" ] do case $1 in -h|--help) echo -e "usage :n$(basename $0) zophImport Options" exit 0 ;; -*) OPTS[$i]="$1" ; (( i += 1 )) ; shift ;; *) OPTS[$i]=""$1"" ; (( i += 1 )) ; shift ;; esac done IFS=" " ...etc
IFS='' # la commande qui suit fait une seule ligne : echo umask 0002 ; echo $MAIL ; zophImport ${OPTS[@]} --album "$ALBUM" --category "$CATEGORY" $DATEDIR --path $DIRECTORY ${PHOTOS_ROOT}/incoming/$i/* ; rmdir ${PHOTOS_ROOT}/incoming/$i | at now + 1 minutes 2>/dev/null
IFS=' ' ...etc #####################
Si quelqu'un a une solution moins tirée par les cheveux, je suis preneur... -- Thomas Harding
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Thomas Nemeth
Le jeu 28 jui 2005 à 20:29, Thomas Harding a tapoté : | Dans l'article , Thomas Harding a écrit : | > Dans l'article , Thomas Harding a écrit : | >> Le script suivant ne marche pas si on lui passe en argument "toto titi" | > | >> Bref, si quelqu'un a la solution... | > | > #!/bin/bash | > i=0 | > until [ -z "$1" ] | > do | OPTS[$i]= "$1" ; (( i += 1 )) ; shift | > done | > echo ${OPTS[@]} | > IFS='' | > find . ${OPTS[@]}
Je ne comprends pas trop le but... Créer une ligne de commande pour find ?
find . $@ ?
Thomas -- BOFH excuse #152: My pony-tail hit the on/off switch on the power strip.
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.
Le jeu 28 jui 2005 à 20:29, Thomas Harding a tapoté :
| Dans l'article <8pdacd.5i4.ln@127.0.0.1>, Thomas Harding a écrit :
| > Dans l'article <r6bacd.e24.ln@127.0.0.1>, Thomas Harding a écrit :
| >> Le script suivant ne marche pas si on lui passe en argument "toto titi"
| >
| >> Bref, si quelqu'un a la solution...
| >
| > #!/bin/bash
| > i=0
| > until [ -z "$1" ]
| > do
| OPTS[$i]= "$1" ; (( i += 1 )) ; shift
| > done
| > echo ${OPTS[@]}
| > IFS=''
| > find . ${OPTS[@]}
Je ne comprends pas trop le but...
Créer une ligne de commande pour find ?
find . $@
?
Thomas
--
BOFH excuse #152:
My pony-tail hit the on/off switch on the power strip.
--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Le jeu 28 jui 2005 à 20:29, Thomas Harding a tapoté : | Dans l'article , Thomas Harding a écrit : | > Dans l'article , Thomas Harding a écrit : | >> Le script suivant ne marche pas si on lui passe en argument "toto titi" | > | >> Bref, si quelqu'un a la solution... | > | > #!/bin/bash | > i=0 | > until [ -z "$1" ] | > do | OPTS[$i]= "$1" ; (( i += 1 )) ; shift | > done | > echo ${OPTS[@]} | > IFS='' | > find . ${OPTS[@]}
Je ne comprends pas trop le but... Créer une ligne de commande pour find ?
find . $@ ?
Thomas -- BOFH excuse #152: My pony-tail hit the on/off switch on the power strip.
-- Pour contacter l'équipe de modération : ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans la liste de distribution des modérateurs.