vendredi 1 février 2013

pass bash arguments with quotes in $@

Très énervant, c'est en grande partie due à l'habitude de lire des jurons du capitaine Haddock
'"$@"' ${a[0]} $*!=$@ [tonnerre][brest]
Je veux juste faire un petit shell sympathique pour en encapsuler un autre moins sympa mais plus utile.
genre :
guy.sh coucou

guy.sh contient :
/$JBPTH/jboss-cli.sh -c -u usr -p pw -w=80 $*

(sh bash ksh ouais bon pareil)

alors, ça marche bien jusqu'à ce qu'on essaie :
guy.sh --command="ls server"
ah purée c'est pas prévu du tout

#on peut récupérer les arguments $@ dans un tableau :

argc=0;for v;do argc=`expr $argc + 1`;argv[$argc]=$v;done
#pour l'afficher
for i in `seq $argc` ;do echo ${argv[$i]};done


joli. Mis à part que 'seq' n'existe pas sur Solaris (. et on perd quand même les guillemets ...

donc en cherchant comment fait redhat java jboss et tout ça dans leur propres wrappers (scripts sandwichs)
on se dit  '"$@"' !!!  :

eval /$JBPTH/jboss-cli.sh -c -u usr -p pw -w=80 '"$@"'



Aucun commentaire: