Wie kann ich Dollarzeichen wiedergeben?

Wie kann ich Dollarzeichen wiedergeben?

Beispielsweise $PATHund$HOME

Wenn ich tippe, echo $PATHgibt es mein zurück $PATH, aber ich möchte das Wort ausgeben $PATHund nicht, wofür die eigentliche Variable steht, echo "$PATH"das funktioniert auch nicht.

Antwort1

Du musst nur dem Dollar entkommen $.:

echo \$PATH
$PATH

Oder setzen Sie es in einfache Anführungszeichen:

echo '$PATH'
$PATH

Dadurch wird sichergestellt, dass das Wort nicht von der Shell interpretiert wird.

Antwort2

$ist in der Syntax der meisten Shells ein ganz besonderes Zeichen. Wenn wir uns nur Bourne-artige Shells ansehen, wird es verwendet, um Folgendes einzuführen:

  1. Parametererweiterungen wie in $#, $var,${foo:-bar}
  2. Befehlsersetzung wie in $(logname)(auch ${ logname;}in einigen Shells, um die Subshell zu vermeiden)
  3. arithmetische Erweiterung wie in $((1+1))(auch $[1+1]in einigen Shells).
  4. andere Formen der Anführungszeichen in einigen Shells wie $'\n'oder $"localized string".

Mit Ausnahme des letzten Falls stehen diese Erweiterungen/Ersetzungen immer noch in Anführungszeichen (und in $"..."oder bash) ksh93.

Um zu verhindern, dass dies $speziell behandelt wird, müssen Sie es wie folgt zitieren:

  • einfache Anführungszeichen: echo '$PATH'oder echo '$'PATH. Das ist das, was Sie im Allgemeinen verwenden möchten, da es in den meisten Shells alle Zeichen (außer sich selbst) maskiert.
  • schwarzer Schrägstrich: echo \$PATH. Auch in Anführungszeichen:echo "\$PATH"
  • in manchen Shells ein anderer Anführungszeichenoperator: echo $'$PATH', echo $'\44PATH'(unter der Annahme eines ASCII-kompatiblen Zeichensatzes),echo $'\u0024'

Oder stellen Sie sicher, dass es nicht Teil einer gültigen Erweiterungsform ist, wie oben aufgeführt:

  • echo "$"PATH
  • echo $""PATH,echo $"PATH" . Diese sollten vermieden werden, da einige Shells die Form von Anführungszeichen mögen ksh93und bashunterstützen .$"..."
  • echo $``PATH. Es gibt keinen Grund, warum Sie dieses verwenden sollten, außer um zu zeigen, dass es möglich ist.
  • echo "${$+$}PATH"und andere verworrene …

Sie können das $auch anders ausgeben:

  • mit einem Unix-kompatiblen echo: echo '\044PATH'(einige andere echos werden benötigt echo -e '\044PATH')
  • printf '\44PATH\n'
  • Katze << \EOF
    $PATH
    Ende der Laufzeit

Beachten Sie, dass diese Backslashes in Anführungszeichen gesetzt werden müssen, da sie offensichtlich auch für die Shell speziell sind.

Es sollte jetzt hoffentlich klar sein, dass es zwar viele Möglichkeiten gibt, es aber keinen guten Grund gibt, etwas anderes als das echo '$PATH'hier zu verwenden.

Antwort3

Beachten Sie, dass wörtliche $ in doppelten Anführungszeichen ein Problem darstellen können. Dies lässt sich vermeiden, indem man das $ außerhalb der doppelten Anführungszeichen setzt, wie folgt:

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."

or like this:

echo "$term is the value of "'$term'

AUSGABE:

My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.

xterm is the value of $term

Antwort4

Verwenden:

echo ''\$PATH'' >> output.txt 

Das wird funktionieren.

verwandte Informationen