PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Befehlsübergabe an eine Variable



Vagofft
24.11.2003, 10:29
Hallo Leute!

Ich habe ein Problem das mir den letzten Nerv raubt! ;(
Ich möchte ein Shellscript schreiben das nach einen laufenden Prog. sucht und es dann beendet.

In der Shell funktioniert folgendes:

ps ax | sed -e 's/ /,/g' | grep cron | awk -F, '{ print $2 }'

Ausgegeben wird mir dann, wie gewünscht nur die Prozessnummer.

Aber wie übergebe ich diese Ausgabe an eine Variable, innerhalb eines Scrips?

Habe folgende Varianten versucht aber es schlug fehl:

variable=ps ax | sed -e 's/ /,/g' | grep cron | awk -F, '{ print $2 }'
echo "$variable"

variable="ps ax | sed -e 's/ /,/g' | grep cron | awk -F, '{ print $2 }'"
echo "$variable"

variable='ps ax | sed -e \'s/ /,/g\' | grep cron | awk -F, \'{ print $2 }\''
echo "$variable"

Die Ausgabe schlug immer fehl. :bounce:

Wer kann mir sagen was ich falsch mache???

HangLoose
24.11.2003, 11:22
moin moin

wie wär's damit

foobar=`pgrep cron`


Gruß HL

damager
24.11.2003, 11:26
wie wäre es mit:
variable=`ps ax | sed -e 's/ /,/g' | grep cron | awk -F, '{ print $2 }'`
echo "$variable"

du brauchst das " ` " zeichen zum maskieren befehlen.

ausserdem könntest doch die ausgabe (pid) in eine datei umleiten und sie dann bei "kill" befehl wieder übergeben.

kill -9 `cat <pidfile>`

damager
24.11.2003, 11:27
moin moin

wie wär's damit

foobar=`pgrep cron`


Gruß HL

oder so :P
machmal sieht man der wald vor lauter befehlen nicht mehr

HangLoose
24.11.2003, 11:33
oder so :P
machmal sieht man der wald vor lauter befehlen nicht mehr

kommt mir irgendwie bekannt vor ;)


Gruß HL

Vagofft
24.11.2003, 11:46
Ja ja,

und wieder einmal als dau geoutet.
Vielen dank für die schnelle Hilfe. :))

Da habe ich wohl das Rad neu erfunden.

ps ax | sed -e 's/ /,/g' | grep cron | awk -F, '{ print $2 }' entpricht ja genau pgrep

Na ja, jetzt weiss ich wenigstens wie pgrep funktioniert. :P

Als Shell Anfänger habe ich leider immernoch das Problem mit der Menge an Befehlen. Da verlaufe ich mich schnell in einen viel zu komplizierten Weg.

Besserung versprochen.

HangLoose
24.11.2003, 12:14
Ja ja,

und wieder einmal als dau geoutet.
Vielen dank für die schnelle Hilfe. :))

Da habe ich wohl das Rad neu erfunden.

ps ax | sed -e 's/ /,/g' | grep cron | awk -F, '{ print $2 }' entpricht ja genau pgrep

Na ja, jetzt weiss ich wenigstens wie pgrep funktioniert. :P

Als Shell Anfänger habe ich leider immernoch das Problem mit der Menge an Befehlen. Da verlaufe ich mich schnell in einen viel zu komplizierten Weg.

Besserung versprochen.

man kann nicht alle befehle kennen 8). pgrep ist allerdings nen befehl, den du garantiert nicht wieder vergisst ;). alternativ gibt es auch noch pidof.


Gruß HL

chb
24.11.2003, 14:53
Ajo anstatt
foobar=`pgrep cron`
geht auch
foobar=$(pgrep cron)

Ist eigentlich dasselbe aber meiner Meinung nach leichter lesbar :)