Beispielsweise $PATH
und$HOME
Wenn ich tippe, echo $PATH
gibt es mein zurück $PATH
, aber ich möchte das Wort ausgeben $PATH
und 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:
- Parametererweiterungen wie in
$#
,$var
,${foo:-bar}
- Befehlsersetzung wie in
$(logname)
(auch${ logname;}
in einigen Shells, um die Subshell zu vermeiden) - arithmetische Erweiterung wie in
$((1+1))
(auch$[1+1]
in einigen Shells). - 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'
oderecho '$'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
. Diese sollten vermieden werden, da einige Shells die Form von Anführungszeichen mögenecho $""PATH
,echo $"PATH"
ksh93
undbash
unterstü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 andereecho
s werden benötigtecho -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.