Frage zu "echo"

  • Hallo, es ist zwar nicht lebensnotwendig, aber ich verstehe folgendes nicht:

    Wenn ich folgenden Befehl in der Konsole eingebe:

    Code
    echo -e "1.Zeile\n2.Zeile\n3.Zeile" | mail -s "Nachricht von pi" meineAdresse@Domain.com

    bekomme ich eine Mail wie es sein soll. Also Ausgabe in 3 Zeilen. Das "-e" wird als Parameter erkannt und nicht ausgegeben. Durch Parameter "-e" wird der Backslash richtig erkannt.

    Steht aber der gleiche Befehl in einem Script z.B. test.sh und wird dieses dann ausgeführt, steht

    Bash
    #!/bin/sh
    echo -e "1.Zeile\n2.Zeile\n3.Zeile" | mail -s "Nachricht von pi" meineAdresse@Domain.com

    und wird dieses dann ausgeführt, steht folgendes in der Mail:


    Code
    -e 1.Zeile
    2.Zeile
    3.Zeile

    Frage: Warum wird hier das "-e" nicht unterdrückt?

    Verstehe ich irgendwie nicht :conf:

  • Dein erstes "echo" ist das built-in der Bash (deiner interaktiven Shell), das 2. ist das built-in der sh, also wahrscheinlich der Dash (readlink -f /bin/sh). Die verhalten sich unterschiedlich, weil es 2 verschiedene Shells sind - Dash-echo kennt nur -n, aber kein -eE.

    Nutze entweder in deinem Script ebenfalls die Bash oder das shellunabhängige Standalone "/usr/bin/echo".

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Edited once, last by llutz ().