thedani
Goto Top

Standartausgaben in Variabeln speichern - bash

Ich beschäftige mich seit kurzen mit der Shell Programmierung und komme nicht mehr weiter.

Ziel des Programms ist es, Login und Username einer Sitzung (x2go) zu ermitteln und bei längerer Inaktivität zu löschen. Folgendes funktioniert bereits:

#!/bin/bashDATE=$(date +"%d")COUNTER_S=1STOP_COUNTER_S=20#Gibt das Session-Datum des letzten Logins auswhile [ $COUNTER_S -lt $STOP_COUNTER_S ]; do echo SESSIONDATE$COUNTER_S=$(x2golistsessions_root | awk {'print $2'} | sed -n $COUNTER_S'p' | sed -e 's/.*|//'| cut -c 1-2)"; COUNTER_S=$(( $COUNTER_S + 1)) done

Als "echo" Ausgabe erhalte ich dann folgende Werte:

SESSIONDATE1=15
SESSIONDATE2=06
SESSIONDATE3=08
SESSIONDATE4=16
SESSIONDATE5=17

Dies sind dann die Variabeln, die ich für die weitere Programmierung benötige. Diese Variabel kann sich bis +19 auffüllen. Ich kriege es hin, dass mir die Variabel ausgegeben wird, aber ich kann sie nicht weiter verwenden, sie werden ja nicht definiert. Ich brauche nun eure Hilfe, um die "generierten" Variabeln abspeichern zu können. Wie löst man so etwas?

Content-Key: 157185

Url: https://administrator.de/contentid/157185

Printed on: April 25, 2024 at 17:04 o'clock

Member: mathe172
mathe172 Dec 17, 2010 at 21:06:31 (UTC)
Goto Top
Hallo thedani!

Ich kenn mich zwar mit Shell nicht so aus, aber wahrscheinlich geht es so:
while [ $COUNTER_S -lt $STOP_COUNTER_S ];
do
SESSIONDATE$COUNTER_S=$(x2golistsessions_root | awk {'print $2'} | sed -n $COUNTER_S'p' | sed -e 's/.*|//'| cut -c 1-2)";  
...
...Wenn es nicht geht, sagt mir bitte auch wieso(will ja auch mal was lernenface-wink)

Mathe172
P.S.:Bitte Codeformatierungen benutzen...
Member: thedani
thedani Dec 20, 2010 at 07:40:13 (UTC)
Goto Top
Zitat von @mathe172:
Hallo thedani!

Ich kenn mich zwar mit Shell nicht so aus, aber wahrscheinlich geht es so:
> while [ $COUNTER_S -lt $STOP_COUNTER_S ];
> do
> SESSIONDATE$COUNTER_S=$(x2golistsessions_root | awk {'print $2'} | sed -n $COUNTER_S'p' | sed -e  
> 's/.*|//'| cut -c 1-2)";  
> ...
> 
...Wenn es nicht geht, sagt mir bitte auch wieso(will ja auch mal was lernenface-wink)

Mathe172
P.S.:Bitte Codeformatierungen benutzen...

So, ich bin nun ein wenig weiter, für solche Dinge wurde eval erfunden:

COUNTER=99
eval SESSIONDATE$COUNTER="'$(date)'"  
echo "$SESSIONDATE99"