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.
@ StéphaneChazelas Diese Frage ist fast zwei Jahre neuer als diese.
DisplayName
@DisplayName, ja, aber es handelt sich um eine "kanonische" Frage, mit der alle Fragen behandelt werden sollen, "wie ich das Sonderzeichen X anzeige". (Ich bin mir nicht sicher, ob ich die Idee mag, dass diese "kanonischen" Cover-It-All-Antworten verwendet werden, um bestimmte Fragen zu schließen, weshalb ich sie nur als Kommentar anstelle einer engen Abstimmung hinzugefügt habe.)
Stéphane Chazelas
Antworten:
77
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.
Danke, es wurde nichts echo -eauf der Manpage erwähnt.
DisplayName
Das -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.
Chepner
2
Dies funktioniert nicht beim Weiterleiten an eine Datei. 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".
Cerin
2
Sehr interessant, wenn Sie einfache Anführungszeichen und ein maskiertes Zeichen verwenden, sollte dies nur \ $ PATH widerspiegeln. Von welchem Betriebssystem / Paket stammt Ihr Echo-Befehl?
Geedoubleya
@Cerin für Sie @ Stephane Antwort funktionierte echo '\044*' > first.txtes wird $ * in first.txt
maq
20
$In der Syntax der meisten Shells ist ein ganz besonderes Zeichen. Wenn wir uns nur Bourne-ähnliche Muscheln ansehen, werden hiermit eingeführt:
Parameter Ausdehnungen wie in $#, $var,${foo:-bar}
Befehlsersetzung wie in $(logname)(auch ${ logname;}in einigen Shells zur Vermeidung der Subshell)
arithmetische Erweiterung wie in $((1+1))(auch $[1+1]in einigen Schalen).
andere Formen des Zitierens in einigen Schalen mögen $'\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:
einfache Anführungszeichen: 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.
blackslash: echo \$PATH. Auch in doppelten Anführungszeichen:echo "\$PATH"
in einigen Muscheln, einige andere zitieren Betreiber: 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 "$"PATH
echo $""PATH,echo $"PATH" . Diese sollten vermieden werden, da einige Muscheln die Form von Anführungszeichen mögen 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 :
mit einem Unix-konformen 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
Oder 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.
Ich bin nicht sicher, was mit dieser Antwort versucht wird. Die Antwort ist, entweder \ $ oder einfache Anführungszeichen zu verwenden. Das Echo '$ PATH' gibt $ PATH aus. Das Echo '\ $ PATH' gibt \ $ PATH aus. Das Echo "\ $ PATH" gibt $ PATH aus. Das Echo '' \ $ PATH '' macht technisch das Richtige, aber die beiden Nullzeichenfolgen dienen keinem Zweck.
echo '$PATH'
. Weitere Informationen zum Zitieren finden Sie hier und hierAntworten:
Sie müssen nur dem Dollar entkommen
$
.:Oder setzen Sie es in einfache Anführungszeichen:
Dadurch wird sichergestellt, dass das Wort von der Shell nicht interpretiert wird.
quelle
echo -e
auf der Manpage erwähnt.-e
Flag wird verwendet, um z. B.\t
zu einem wörtlichen Tabulatorzeichen zu expandieren . Es hat nichts mit dem Dollarzeichen zu tun, um eine Parametererweiterung zu verhindern.echo '\$PATH' >> output.txt
Dies 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.txt
es 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
$"..."
inbash
oderksh93
) auf.Um zu verhindern, dass
$
dies speziell behandelt wird, müssen Sie Folgendes angeben:echo '$PATH'
oderecho '$'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 "$"PATH
. Diese sollten vermieden werden, da einige Muscheln die Form von Anführungszeichen mögenecho $""PATH
,echo $"PATH"
ksh93
undbash
unterstü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 andereecho
brauchenecho -e '\044PATH'
)printf '\44PATH\n'
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.quelle
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:
AUSGABE:
quelle
echo "$term is the value of \$term"
wie bereits in einer anderen Antwort erläutert. Oderprintf '%s is the value of $term\n' "$term"
wie auch immer sollte man nichtecho
für beliebige Daten verwenden.Verwenden:
Das wird funktionieren.
quelle
ec""h'''o''' ''""''\$P''A""TH''