Par exemple, $PATH
et$HOME
Quand je tape, echo $PATH
cela retourne my $PATH
, mais je veux faire écho au mot $PATH
et non à ce que la variable réelle représente, echo "$PATH"
ne fonctionne pas non plus.
Par exemple, $PATH
et$HOME
Quand je tape, echo $PATH
cela retourne my $PATH
, mais je veux faire écho au mot $PATH
et non à ce que la variable réelle représente, echo "$PATH"
ne fonctionne pas non plus.
Réponses:
Vous avez juste besoin d'échapper au dollar $
.:
echo \$PATH
$PATH
Ou entourez-le entre guillemets simples:
echo '$PATH'
$PATH
Cela garantira que le mot n'est pas interprété par le shell.
echo -e
de la page de manuel.
-e
drapeau est utilisé pour développer, par exemple, \t
un caractère de tabulation littéral. Cela n'a aucun rapport avec l'échappement du signe dollar pour empêcher l'expansion des paramètres.
echo '\$PATH' >> output.txt
résultats dans "/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / opt / vc / bin" en cours d'écriture dans le fichier , pas "$ PATH".
echo '\044*' > first.txt
il produira $ * en premier.txt
$
dans la syntaxe de la plupart des coquillages est un caractère très spécial. Si nous ne regardons que les coquilles de type Bourne, il est utilisé pour introduire:
$#
, $var
,${foo:-bar}
$(logname)
(également ${ logname;}
dans certains shells pour éviter le sous-shell)$((1+1))
(également $[1+1]
dans certaines coquilles).$'\n'
ou $"localized string"
.À l' exception de ce dernier cas, ces extensions / substitutions se produisent encore à l' intérieur des guillemets doubles (et à l' intérieur $"..."
de bash
ou ksh93
)
Pour que cela $
ne soit pas traité spécialement, vous devez le citer avec:
echo '$PATH'
ou echo '$'PATH
. Celui que vous voulez généralement utiliser car il échappe à tous les caractères (sauf lui-même) dans la plupart des obus.echo \$PATH
. Aussi entre guillemets doubles:echo "\$PATH"
echo $'$PATH'
, echo $'\44PATH'
( en supposant un charset compatible ASCII),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
soutiennent la $"..."
forme de citations.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 sortir cette $
autre manière:
echo
: echo '\044PATH'
( echo
besoin de quelque autre echo -e '\044PATH'
)printf '\44PATH\n'
chat << \ EOF $ PATH EOF
Notez que ces barres obliques inverses doivent être citées car elles sont également spéciales pour le shell.
Si tout va bien, il devrait être clair maintenant que même s'il existe de nombreuses façons de le faire, il n'y a pas de bonne raison pour que vous souhaitiez utiliser autre chose que echo '$PATH'
ici.
Notez que $ littéral entre guillemets doubles peut être un problème. Cela peut être fait en produisant le $ en dehors des guillemets, 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
echo "$term is the value of \$term"
comme déjà expliqué dans une autre réponse. Ou printf '%s is the value of $term\n' "$term"
comme de toute façon, il ne faut pas utiliser echo
pour des données arbitraires.
Utilisation:
echo ''\$PATH'' >> output.txt
Cela fonctionnera.
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'
. pour plus d'informations sur les citations, visitez ceci et cela