Scripting mit awk (oder wie man Zeilen aus einem String del)
Scripting mit awk (oder wie man Zeilen aus einem String del)
Hallo , ich habe ein Problem und zwar will ich mir einen automatisierten bash script bauen zum resizen von lv's in einer lvm
#!/bin/bash
# find the right space from lv files
rechner=`du -c |grep total`
rechner=`$rechner | awk "{'print $1'}"`
// hier gibt er die awk variable als fehler aus!
rechner=`expr '$rechner * 1.05'| bc`
rechner=`$rechner`K
##resize ext3 fs
tune2fs -O ^has jurnal /dev/vg/testlv
e2fsck -f /dev/vg/testlv
resize2fs -p /dev/vg/testlv `$rechner`
e2fsck -f /dev/vg/testlv
##resize lvm lv
lvm > lvreduce -L`$rechner` /dev/vg/testlv
lvm > exit
e2fsck -f /dev/vg/testlv
mount -t /dev/vg/testlv
dabei denkt bash natürlich das die awk variable eine bash variable ist.
Kann ich das irgendwie umgehen, kann mir vielleicht jmd mit dem scripting helfen?
mfg Cclear
Vielen dank im vorraus
//EDIT
Scheint als würde es mir auch völlig reichen einfach nur einen string aus einem string zu entfernen (irgendwie "total und die leerzeichen aus der Variablen zu löschen")
#!/bin/bash
# find the right space from lv files
rechner=`du -c |grep total`
rechner=`$rechner | awk "{'print $1'}"`
// hier gibt er die awk variable als fehler aus!
rechner=`expr '$rechner * 1.05'| bc`
rechner=`$rechner`K
##resize ext3 fs
tune2fs -O ^has jurnal /dev/vg/testlv
e2fsck -f /dev/vg/testlv
resize2fs -p /dev/vg/testlv `$rechner`
e2fsck -f /dev/vg/testlv
##resize lvm lv
lvm > lvreduce -L`$rechner` /dev/vg/testlv
lvm > exit
e2fsck -f /dev/vg/testlv
mount -t /dev/vg/testlv
dabei denkt bash natürlich das die awk variable eine bash variable ist.
Kann ich das irgendwie umgehen, kann mir vielleicht jmd mit dem scripting helfen?
mfg Cclear
Vielen dank im vorraus
//EDIT
Scheint als würde es mir auch völlig reichen einfach nur einen string aus einem string zu entfernen (irgendwie "total und die leerzeichen aus der Variablen zu löschen")
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
Die Zeile sollte so funktionieren bzw. die Berechnung:
Code: Alles auswählen
rechner=$(du -c /home/user/|grep total|awk '{print $1}')
rechner=$(echo "$rechner * 1.05"|bc)
echo $rechner
Oh, yeah!
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
es klappt =D , aber leider brauche ich für den script eine integer zahl und keinen double , kann man das irgendwie umwandeln ? (e2fsck braucht ganze Kilobyte,keine dezimalen...)
okay , bash variablen haben keine typen,also ,wie kann ich einfach die nachkommastellen (sind bei 5% von mind 5gb über eh nicht wichtig) einfach austauschen? mit sed vllt?
okay , bash variablen haben keine typen,also ,wie kann ich einfach die nachkommastellen (sind bei 5% von mind 5gb über eh nicht wichtig) einfach austauschen? mit sed vllt?
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
Verstehe das Problem noch nicht ganz.
Du kannst dir mit du -ck doch die Größe in Kilobyte ausgeben lassen.
Du kannst dir mit du -ck doch die Größe in Kilobyte ausgeben lassen.
Oh, yeah!
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
aber es sind leider auch *.* KB möglich
zur Zeit versuche ich es mit printf zu runden
zur Zeit versuche ich es mit printf zu runden
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
Sorry, aber ich verstehe nicht wirklich was du genau meinst.
Kannst du eventuell mal ein Beispiel posten (ist-Zustand und soll-Zustand)?
Kannst du eventuell mal ein Beispiel posten (ist-Zustand und soll-Zustand)?
Oh, yeah!
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
- printf("%d", 3.6) zum Kommateil abschneidenCclear hat geschrieben:aber es sind leider auch *.* KB möglich
zur Zeit versuche ich es mit printf zu runden
- printf("%.0f", 3.6) oder int(3.6) zum Runden.
Use ed once in a while!
Re: Scripting mit awk (oder wie man Zeilen aus einem String del)
super,genau das was ich gebraucht hab ,danke!