Problem Linux<->Solaris bei Shell Skript

Diskutiere Problem Linux<->Solaris bei Shell Skript im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hi Leute Ich habe folgendes Shell Skript geschrieben, es funktioniert auch wunderbar (unter Linux -> Bash). #!/usr/local/gnu/bin/bash...

  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. #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. Probleme mit WinSCP und Rechten

    Probleme mit WinSCP und Rechten: Hallo. Ich habe vor ein paar Tgen meinen ersten Ubuntu 16.04 vServer bei 1&1 bestellt, gemäß dem sicheren Umgang damit, habe ich erstmal den SSH...
  2. Bootproblem

    Bootproblem: Hallo Ein PC (i686 mit Debian unstable, nox) hat Bootprobleme (will heißen ist erfolgt keine Grafikausgabe. was ich bisher gemacht habe: HDD an...
  3. Crontab und Scripts - Problem

    Crontab und Scripts - Problem: Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...
  4. Problem bei der installation einer Sun Netzwerkkarte

    Problem bei der installation einer Sun Netzwerkkarte: Guten Morgen zusammen, beim installieren einer zusätzlichen Netzwerkkarte habe ich ein Problem. Die Karte wird nicht automatisch installiert. Es...
  5. Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe

    Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe: Liebe Community, zurzeit arbeite ich an eine Active Directory Domäne die mittels Samba läuft. Dazu habe ich einen AD DC auf Debian 8.7 mit Samba...