http://www.pronix.de -> Forum -> Linux-Unix Programmierung

Forum: Linux-Unix Programmierung

Moderatoren: juergen, Martin Conrad

Thema: [EDIT] - Errata beim login_time script vielleicht ?

  • (nur registrierte Mitglieder)
Seite 1003 im dritten Auflage.

Das Skript login_time hat Errata vielleicht ?

Hier habe ich es als 'deletemenow' genannt.

BILD (externer link)

Hier zeigt es nicht die 'keine ueberstimmung ...' Zeile!

Und wenn ich ein falsches username schreibe, gibt es mir das zurueck

BILD (externer link)

--
Beste Grüße,
Abraham

 
Hi,

Zitat:

Hier zeigt es nicht die 'keine ueberstimmung ...' Zeile!


Weil du zwei Parameter übergibst (zweimal 'ab'). Das erste If verhintert aber, dass das Programm ausgeführt wird, wenn die Parameteranzahl ungleich 1 ist.

Zitat:

Und wenn ich ein falsches username schreibe, gibt es mir das zurueck

TEXT (externer link)


Das liegt daran, dass bei grep keine passende Zeile findet, also wird nichts an set übergeben. Und wenn set ohne parameter aufgerufen wird, gibt es alle Variablen aus. Zitat Manpage set (externer link) :

Zitat:

If no options or arguments are supplied, set displays the names and values of all shell variables and functions, sorted according to the current locale, in a format that may be reused as input. When options are supplied, they set or unset shell attributes.



Ich weiß nicht warum in dem Beispiel set verwendet wird, eigentlich wollen wir ja nur Spalten aus einem Text ausschneiden, da wäre IMHO awk geeigneter.

Mögliche Änderung fürs Skript:


#!/bin/bash                                       

if [ $# -ne 1 ]; then
        echo "Verwendung $0 Username"
        exit 1                       
fi

# Check if username can be found
TMP=`who | grep $1`

# $? is the return value of the last called programm
if [ $? -ne 0 ]; then
        echo "Keine Übereinstimmung"
        exit 0
fi

# Extract date and time columns
LOGIN_TIME=`echo $TMP | awk '{print $3" "$4}'`

echo "($1) login-zeit: $LOGIN_TIME"


mfg, Wolfgang




--
Hex, Bugs and Rock 'n Roll

 
Zitat:
Weil du zwei Parameter übergibst (zweimal 'ab'). Das erste If verhintert aber, dass das Programm ausgeführt wird, wenn die Parameteranzahl ungleich 1 ist.


das hast du gelesen beim zweiten Eingabe, lies mal bitte die erste Eingabe auch..

--
Beste Grüße,
Abraham

 
Hi Abraham,

Zitat:

das hast du gelesen beim zweiten Eingabe, lies mal bitte die erste Eingabe auch..


Bei der ersten Eingabe rufst du das Skript ohne Parameter auf. Das entspricht auch nicht "genau einem Parameter".

mfg, Wolfgang

--
Hex, Bugs and Rock 'n Roll

 
Hi Wolfgang,

erstmals, vielen Dank fuer den Replies und die Hilfe !

und jetzt zur Sache:

Zitat:

Bei der ersten Eingabe rufst du das Skript ohne Parameter auf. Das entspricht auch nicht "genau einem Parameter".



Genau! Sollte mit gar keinem Parameter das Skript aufrufen um auch die zweite IF condition [$# -lt 1] zu erfuellen.

--
Beste Grüße,
Abraham

 
  • (nur registrierte Mitglieder)