Par exemple, $PATH
et $HOME
Quand je tape echo $PATH
il retourne mon $PATH
, mais je veux faire écho à la Parole $PATH
et non pas ce que représente la variable réelle, echo "$PATH"
ne fonctionne pas non plus.
Vous avez juste besoin d'échapper au dollar $
.:
echo \$PATH
$PATH
Ou entourez-le de guillemets simples:
echo '$PATH'
$PATH
Cela garantira que le mot n'est pas interprété par le shell.
$
Dans la syntaxe de la plupart des shells est un caractère très spécial. Si nous ne regardons que les coquilles de type Bourne, elles sont utilisées pour introduire:
$#
, $var
, ${foo:-bar}
$(logname)
(aussi ${ logname;}
dans certains shells pour éviter le sous-shell)$((1+1))
(aussi $[1+1]
dans certains shells).$'\n'
ou $"localized string"
.À l'exception du dernier cas, ces extensions/substitutions se produisent toujours entre guillemets doubles (et à l'intérieur de $"..."
Dans bash
ou ksh93
)
Pour empêcher que $
Soit traité spécialement, vous devez le citer avec:
echo '$PATH'
ou echo '$'PATH
. Celui que vous voudriez généralement utiliser car il échappe à tous les personnages (sauf lui-même) dans la plupart des coquilles.echo \$PATH
. Également à l'intérieur des guillemets doubles: echo "\$PATH"
echo $'$PATH'
, echo $'\44PATH'
(en supposant un ASCII charset compatible), echo $'\u0024'
Ou assurez-vous que cela ne fait pas partie d'une forme d'expansion valide, comme indiqué ci-dessus:
echo "$"PATH
echo $""PATH
, echo $"PATH"
ksh93
Et bash
prennent en charge la forme $"..."
De guillemets.echo $``PATH
. Aucune raison pour laquelle vous voudriez l'utiliser, sauf pour montrer que c'est possible.echo "${$+$}PATH"
Et d'autres alambiqués ...Ou vous pouvez générer ce $
D'une autre manière:
echo
conforme à Unix: echo '\044PATH'
(certains autres echo
ont besoin de echo -e '\044PATH'
)printf '\44PATH\n'
cat <<\EOF $ PATH EOF
Notez comment ces barres obliques inverses doivent être citées car elles sont également spéciales pour le shell, évidemment.
Si tout va bien il devrait être clair maintenant que bien qu'il existe de nombreuses façons de le faire, il n'y a aucune bonne raison que vous voudriez utiliser autre chose que echo '$PATH'
Ici.
Notez que le littéral $ entre guillemets doubles peut être un problème. Cela peut être fait en produisant le $ en dehors des guillemets doubles, comme ceci:
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'
SORTIE:
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