OVH Cloud OVH Cloud

Question cmd et variables

4 réponses
Avatar
Riddick
Je cherche a inclure le resultat d une commande dans un variable pour
reutiliser cette variable dans diverse commande

exemple rpm -query nomdurpm
je voudrais que le resultat de cette commande apparaisse par exemple dans
la variable "machin$" de façon a executer par exemple
rpm -e "machin$" etc

Quelqu un pourrait il m expliquer comment faire cela

merci d avance

4 réponses

Avatar
GERBIER Eric
Riddick wrote:
Je cherche a inclure le resultat d une commande dans un variable pour
reutiliser cette variable dans diverse commande

exemple rpm -query nomdurpm
je voudrais que le resultat de cette commande apparaisse par exemple dans
la variable "machin$" de façon a executer par exemple
rpm -e "machin$" etc

Quelqu un pourrait il m expliquer comment faire cela


resultat=$( rpm -q bash )
echo $resultat
rpm -qi $resultat

Avatar
Stephane Chazelas
2004-10-08, 09:26(+02), Riddick:

Je cherche a inclure le resultat d une commande dans un variable pour
reutiliser cette variable dans diverse commande

exemple rpm -query nomdurpm
je voudrais que le resultat de cette commande apparaisse par exemple dans
la variable "machin$" de façon a executer par exemple
rpm -e "machin$" etc

Quelqu un pourrait il m expliquer comment faire cela
[...]


machin=$(rpm -query nomdurpm)
# attention, tous les sauts de lignes a la find de l'output de
# la commande rpm sont supprimés
rpm -e "${machin}" etc
# ne jamais oublier les guillemets

Le code ci-dessus suppose un shell de type Bourne comme zsh,
bash ou ksh. Avec un shell de type csh, ca sera different, et
encore different avec un shell de type rc.

--
Stephane

Avatar
Riddick
Merci bcp :-)
Avatar
Stephane Chazelas
2004-10-08, 09:46(+02), GERBIER Eric:
[...]
resultat=$( rpm -q bash )
echo $resultat
rpm -qi $resultat


Seulement si $resultat doit etre consideré comme une liste de
patterns de fichiers (par defaut separes par des blancs). Sinon,
il faut mettre des guillemets autour de $resultat.

Comparer:

resultat=$(echo '*** foo ***')
printf '<%sn>' $resultat
# avec
printf '<%sn>' "$resultat"

# attention, le comportement est different avec zsh

--
Stephane