[ "$UID" = "0" ] || su -

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von flugopa, 21.02.2009.

  1. #1 flugopa, 21.02.2009
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Was ist an den nachfolgenden Skript falsch?

    Code:
    # cat erstelle.sh
    cat << EOF > ergebnis
    [ "$UID" = "0" ] || su -
    EOF
    chmod +x ergebnis
    
    erwartet
    Code:
    # cat ergebnis 
    [ "$UID" = "0" ] || su -
    
    gekommen
    Code:
    # cat ergebnis 
    [ "0" = "0" ] || su -
    
     
  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 floyd62, 21.02.2009
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Mach doch mal
    Code:
    [ "\$UID" = "0" ] || su -
    
    ... sonst wird die UID schon beim Auswerten des Here-Documents innerhalb der "-Quotes ausgewertet.

    Gruss
     
  4. #3 flugopa, 21.02.2009
    flugopa

    flugopa Der lernwillige

    Dabei seit:
    27.05.2006
    Beiträge:
    739
    Zustimmungen:
    0
    Ort:
    München
    Vielen Dank floyd62, für die schnelle und richtige Antwort.
     
  5. #4 Gott_in_schwarz, 21.02.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Du kannst auch einfach (statt jedes einzelne Dollarzeichen einzeln zu escapen) Variablen-Interpolation "global" innerhalb des here-docs ausschalten, indem du den Begrenzer in single-quotes (oder irgendwelche quotes, aber ich rate zu single-quotes) packst:
    Code:
           The format of here-documents is:
    
                  <<[-]word
                          here-document
                  delimiter
    
           No  parameter expansion, command substitution, arithmetic expansion, or pathname expansion is performed
           on word.  [b]If any characters in word are quoted, the delimiter is the result of quote removal  on  word,
           and  the lines in the here-document are not expanded.[/b]  [i]If word is unquoted, all lines of the here-docu‐
           ment are subjected to parameter expansion, command substitution, and arithmetic expansion.[/i]  In the lat‐
           ter  case,  the character sequence \<newline> is ignored, and \ must be used to quote the characters \,
           $, and ‘.
    Also einfach:
    Code:
    cat << 'EOF' > ergebnis
    [ "$UID" = "0" ] || su -
    EOF
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

[ "$UID" = "0" ] || su -