Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
KingBonecrusher
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Beitrag
von KingBonecrusher » 31.01.2007 07:08:15
Gibts ne Möglichkeit Daten aus ner pipe an read zu senden? Sollte ja eigentlich wegen der Eltern-Kind Vererbung nicht klappen, was es auch nicht macht.
Mein Script:
========
Code: Alles auswählen
....
IFS=": "
....
function READ_PROC
{
grep -i "model name" /etc/cpuinfo | read -a CPUINFO
}
....
function PRINT_PROC
{
echo ${CPUINFO[1]}
}
...
Ich würde das gerne mit read erledigen, da die bash prima Variablen zerlegen kann!
Zuletzt geändert von
KingBonecrusher am 31.01.2007 21:58:22, insgesamt 1-mal geändert.
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 31.01.2007 09:38:34
ja, zum Beispiel:
Code: Alles auswählen
gms@gms4:~$ cat x.sh
#!/bin/bash
function READ_PROC
{
grep -i "model name" /proc/cpuinfo | { IFS=":" read prefix model && echo $model; }
}
READ_PROC
gms@gms4:~$ ./x.sh
Intel(R) Pentium(R) D CPU 3.00GHz
Gruß
gms
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 31.01.2007 12:24:29
Aber sowas geht doch, meiner Meinung nach, einfacher mit cut oder awk.
Ok, man erhält dann am Anfang der Zeile noch ein Leerzeichen, welches man dann z.B. noch mit sed oder so entfernen müsste.
Oh, yeah!
-
gms
- Beiträge: 7798
- Registriert: 26.11.2004 20:08:38
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von gms » 31.01.2007 12:51:40
Duff hat geschrieben:Aber sowas geht doch, meiner Meinung nach, einfacher mit cut oder awk.
Ok, man erhält dann am Anfang der Zeile noch ein Leerzeichen, welches man dann z.B. noch mit sed oder so entfernen müsste.
wenn du awk verwenden möchtest, brauchst du kein sed:
Code: Alles auswählen
awk -F: '$1~/model name/{ sub(/^ +/,"",$2);print $2}' /proc/cpuinfo
Intel(R) Pentium(R) D CPU 3.00GHz
umgekehrt brauchst du auch kein awk, wenn du sed verwenden möchtest:
Code: Alles auswählen
sed -ne 's/^.*model name.*: *\(.*\)$/\1/p' /proc/cpuinfo
Gruß
gms
-
KingBonecrusher
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Beitrag
von KingBonecrusher » 31.01.2007 16:06:48
Danke erstmal...
Hat gut geklappt. Gibt auch eine Möglichkeit die Variablen auch weiter zu nutzen? Ausserhalb der Funktion? Wenn ich die später wieder verwenden will?
Code: Alles auswählen
!/bin/bash
function READ_PROC
{
grep -i "model name" /proc/cpuinfo | { IFS=":" read prefix model && echo $model; }
}
READ_PROC
-> echo $model
Ist das Möglich? Bin noch neu im Scripten. Meint Ihr mit einer Funktion ist das eleganter gelöst?
Mein Ziel war es eben sowas wie ein PC-Info-Script zu machen. Aus Neugierde. Aber ich sehe schon, mit Funktionen geht das wohl besser.
Ist es möglich überhaupt Daten in eine Sysweite Variable zu pipen mit read?
mfg
-
Duff
- Beiträge: 6321
- Registriert: 22.03.2005 14:36:03
- Wohnort: /home/duff
Beitrag
von Duff » 01.02.2007 09:34:33
@gms: ...hast ja Recht...
Oh, yeah!