Zum Beispiel $PATHund$HOME
Wenn ich tippe echo $PATH, gibt es mein zurück $PATH, aber ich möchte das Wort wiedergeben $PATHund nicht, wofür die tatsächliche Variable steht, echo "$PATH"funktioniert auch nicht.
Zum Beispiel $PATHund$HOME
Wenn ich tippe echo $PATH, gibt es mein zurück $PATH, aber ich möchte das Wort wiedergeben $PATHund nicht, wofür die tatsächliche Variable steht, echo "$PATH"funktioniert auch nicht.
Antworten:
Sie müssen nur dem Dollar entkommen $.:
echo \$PATH
$PATH
Oder setzen Sie es in einfache Anführungszeichen:
echo '$PATH'
$PATH
Dadurch wird sichergestellt, dass das Wort von der Shell nicht interpretiert wird.
echo -eauf der Manpage erwähnt.
-eFlag wird verwendet, um z. B. \tzu einem wörtlichen Tabulatorzeichen zu expandieren . Es hat nichts mit dem Dollarzeichen zu tun, um eine Parametererweiterung zu verhindern.
echo '\$PATH' >> output.txtDies führt dazu, dass "/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / opt / vc / bin" in die Datei geschrieben wird , nicht "$ PATH".
echo '\044*' > first.txtes wird $ * in first.txt
$In der Syntax der meisten Shells ist ein ganz besonderes Zeichen. Wenn wir uns nur Bourne-ähnliche Muscheln ansehen, werden hiermit eingeführt:
$#, $var,${foo:-bar}$(logname)(auch ${ logname;}in einigen Shells zur Vermeidung der Subshell)$((1+1))(auch $[1+1]in einigen Schalen).$'\n'oder $"localized string".Mit Ausnahme des letzten Falls treten diese Erweiterungen / Ersetzungen immer noch in doppelten Anführungszeichen (und $"..."in bashoder ksh93) auf.
Um zu verhindern, dass $dies speziell behandelt wird, müssen Sie Folgendes angeben:
echo '$PATH'oder echo '$'PATH. Das, das Sie normalerweise verwenden möchten, da es in den meisten Shells alle Zeichen (außer sich selbst) verliert.echo \$PATH. Auch in doppelten Anführungszeichen:echo "\$PATH"echo $'$PATH', echo $'\44PATH'(eine ASCII - kompatible charset vorausgesetzt),echo $'\u0024'Oder stellen Sie sicher, dass es nicht Teil einer gültigen Form der Erweiterung ist, wie oben aufgeführt:
echo "$"PATHecho $""PATH,echo $"PATH"ksh93und bashunterstützen $"...".echo $``PATH. Kein Grund, warum Sie diesen verwenden möchten, außer um zu zeigen, dass es möglich ist.echo "${$+$}PATH" und andere verschlungene ...Oder Sie könnten das auf eine $andere Weise ausgeben :
echo: echo '\044PATH'(einige andere echobrauchen echo -e '\044PATH')printf '\44PATH\n'cat << \ EOF $ PATH EOF
Beachten Sie, wie diese umgekehrten Schrägstriche angegeben werden müssen, da sie offensichtlich auch speziell für die Shell sind.
Sollte hoffentlich klar sein, dass es zwar viele Möglichkeiten gibt, dies zu tun, es aber keinen guten Grund gibt, etwas anderes als echo '$PATH'hier zu verwenden.
Beachten Sie, dass $ in Anführungszeichen ein Problem sein kann. Sie können dies tun, indem Sie das $ außerhalb der doppelten Anführungszeichen wie folgt erzeugen:
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
echo "$term is the value of \$term"wie bereits in einer anderen Antwort erläutert. Oder printf '%s is the value of $term\n' "$term"wie auch immer sollte man nicht echofür beliebige Daten verwenden.
Verwenden:
echo ''\$PATH'' >> output.txt
Das wird funktionieren.
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'. Weitere Informationen zum Zitieren finden Sie hier und hier