Zum Beispiel $PATH
und$HOME
Wenn ich tippe echo $PATH
, gibt es mein zurück $PATH
, aber ich möchte das Wort wiedergeben $PATH
und nicht, wofür die tatsächliche Variable steht, echo "$PATH"
funktioniert auch nicht.
Zum Beispiel $PATH
und$HOME
Wenn ich tippe echo $PATH
, gibt es mein zurück $PATH
, aber ich möchte das Wort wiedergeben $PATH
und 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 -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 $"..."
in bash
oder 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 "$"PATH
echo $""PATH
,echo $"PATH"
ksh93
und bash
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 andere echo
brauchen 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 echo
fü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