Problem Linux<->Solaris bei Shell Skript

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Thomy, 04.12.2007.

  1. Thomy

    Thomy Jungspund

    Dabei seit:
    20.10.2005
    Beiträge:
    21
    Zustimmungen:
    0
    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
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tr0nix, 04.12.2007
    Zuletzt bearbeitet: 04.12.2007
    tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    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.
     
Thema:

Problem Linux<->Solaris bei Shell Skript

Die Seite wird geladen...

Problem Linux<->Solaris bei Shell Skript - Ähnliche Themen

  1. Virtualboxproblem

    Virtualboxproblem: Hallo Folgnedes Problem: Ich kann ohne Probleme In Debian-Sid, 64Bit und virtualbox-dkms Unixoide installieren, wenn es sich um eine...
  2. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  3. Problem bei apt-get upgrade (Kali 2.0)

    Problem bei apt-get upgrade (Kali 2.0): Hi, seit paar Tagen habe ich einige Probs. Dachte es sei mal an der Zeit für ein Update und nun tauchen da einige Fehler auf: Es müssen noch 0 B...
  4. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  5. Problem mit Win-Zugriff auf SAMBA

    Problem mit Win-Zugriff auf SAMBA: Hallo rundherum, vielleicht hat jemand eine Idee... Habe jetzt schon 1 1/2 Tage damit verbraten und den Fehler nicht gefunden. Problem:...