Problem Linux<->Solaris bei Shell Skript

T

Thomy

Jungspund
Hi Leute

Ich habe folgendes Shell Skript geschrieben, es funktioniert auch wunderbar (unter Linux -> Bash).

Code:
#!/usr/local/gnu/bin/bash
check_username() {
checkuser=$1
echo "checked user: $checkuser"
if [ $NIS_MODE -eq "1" ]
    then
    if [ `cat $PASSWD | awk -F: '{print $1}' | $GREPCMD ^"$checkuser"$ | wc -l` -gt "0" ]
    then
echo "1"
        return "1"
    else
echo "0"
        return "0"
    fi

Wenn ich das aber unter Solaris (5.7 mit der tcsh Shell) ausführe, gibt es folgende Fehlermeldung:

checked user: stather
UserMan2.sh: stather$: not found
0
Kein Benutzer gefunden
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.


ich verstehe das nicht, an was kann das denn liegen? Solaris verwendet zur Interpretation des Skriptes ja auch die Bash, auch die Version von Grep ist gleich. Und wenn ich nur auf der Solaris Shell:
Code:
set checkuser="stather"
cat $PASSWD | awk -F: '{print $1}' | $GREPCMD ^"$checkuser"$ | wc -l

eingebe, bekomme ich auch die 1 raus.



Gruß Thomy
 
Wrong use of so ziemlich jedem überflüssigen Kommando :).
Code:
awk -F: '
        BEGIN {nr=0}

        /'$USER':/ {
                nr++
        }

        END {
                print nr
        }' /etc/passwd

... oder noch einfacher ...
Code:
egrep -c "^$USER:" /etc/passwd

Du kannst natürlich auch alles auf eine Zeile machen. Das funktioniert garantiert unter Solaris (SunOS 5.10 jedenfalls läufts) und unter Linux sollte das auch klappen. Noch einfacher wäre übrigens, nach dem egrep/awk Kommando einfach ein "return $$" zu machen, sollte das gleiche rauskommen und du sparst die ganze if/then/else Syntax.

P.S. pipen ist schön und gut, es funktioniert ja auch prima unter Unix, nur hast du bei deinem Beispiel oben 4 Programme die vom OS gespawnt werden müssen während meines nur jeweils einen Prozess spawnt. Bei einem Multiusersystem unter Last, können solche Scripte - sollten sie regelmässig ausgeführt werden - das System ziemlich belasten.
 
Zuletzt bearbeitet:

Ähnliche Themen

Switche abfragen über Script

Shell Skript beschleunigen

HandbrakeCLI Shell Skript

Port generieren, wenn nicht dann

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

Zurück
Oben