Pages : 1
#1 Le 05/04/2011, à 23: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, à 02:15
- FRUiT
Re : remplacer une liste bash
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, à 02: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, à 02: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, à 02: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