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 06/04/2011, à 00:25

Hizoka

remplacer une liste bash

Bonsoir,

j'ai une question sur un truc que je viens de voir :

Quand je fais :

place=$(df /home/hizoka) place=(${place##*$'\n'}) place=${place[2]} && echo "${place} et ${place[2]} et ${place[@]}"

afin de ne conserver que le 3e element, j'obtiens :

3812076 et 3812076 et 3812076 39365712 3812076 33553948 11% /home

Or je pensais que ça ferait un truc :

3812076 et  et

Il semble qu'en faisant :

place=${place[2]}

cela soit égal à :

place[0]=${place[2]}

.

Ma question est donc la suivante, est-il possible d'utiliser le même nom de variable mais en ne conservant qu'un seul item ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 06/04/2011, à 03:15

FRUiT

Re : remplacer une liste bash

Hizoka a écrit :
place=$(df /home/hizoka) place=(${place##*$'\n'}) place=${place[2]} && echo "${place} et ${place[2]} et ${place[@]}"

Attention aux définitions de variables en série sur la même ligne souvent ça donne des erreurs il vaut mieux séparer avec des ;

Sinon, ça répond pas à ta question mais j'aurais plutôt fait comme ça :

place=$(df | awk '/\/home$/ { print $3 }')

Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#3 Le 06/04/2011, à 03:26

Hizoka

Re : remplacer une liste bash

ouais j'ai fait un truc du genre pour tester, mais sur le principe ca fait des commandes plus lourdes que du full bash.

des problemes si c'est sur la même ligne ?
je le fait pour tous mes scripts et j'ai rien de choquant...
t'as des ex ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 06/04/2011, à 03:41

FRUiT

Re : remplacer une liste bash

Exemple :

# bash
> var1=100 var2=$(($var1/2)) echo $var2
50
> sh
> var1="foo" var1="${var1}bar" echo $var1

> var1="foo" var1="${var1}bar" ; echo $var1  
bar
> var1="foo" ; var1="${var1}bar" ; echo $var1
foobar
> exit
> var1="foo" var1="${var1}bar" echo $var1
100
> var1="foo" var1="${var1}bar" echo $var1
100
> var1="foo" var1="${var1}bar" ; echo $var1
foobar

(Apparemment donc c'est quand même moins grave en bash qu'en sh)


Et pour la commande, vu que de toute façon tu ourvres un sous-shell pour df, autant prolonger avec awk, l'instruction dans ton script sera moins longue et complexe. (et de plus awk ça me semble bien rapide mais c'est peut-être qu'une impression). Mais bon tu as bien raison il  vaut mieux préférer le full-bash en règle générale.

Dernière modification par FRUiT (Le 06/04/2011, à 03:52)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne