Например, $PATH
и$HOME
Когда я набираю, echo $PATH
он возвращает мое $PATH
, но я хочу повторить слово, $PATH
а не то, что означает реальная переменная, echo "$PATH"
тоже не работает.
Например, $PATH
и$HOME
Когда я набираю, echo $PATH
он возвращает мое $PATH
, но я хочу повторить слово, $PATH
а не то, что означает реальная переменная, echo "$PATH"
тоже не работает.
Ответы:
Вам просто нужно сбежать от доллара $
.
echo \$PATH
$PATH
Или заключите его в одинарные кавычки:
echo '$PATH'
$PATH
Это гарантирует, что слово не интерпретируется оболочкой.
echo -e
на странице руководства ничего не сказано .
-e
Флаг используется для расширения, например, \t
в буквальном табуляции. Это не связано с выходом из знака доллара для предотвращения расширения параметров.
echo '\$PATH' >> output.txt
в результате в файл записывается "/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / opt / vc / bin" , а не "$ PATH".
echo '\044*' > first.txt
он будет выводить $ * в first.txt
$
в синтаксисе большинства оболочек это очень специальный символ. Если мы только посмотрим на борновоподобные снаряды, то используем:
$#
, $var
,${foo:-bar}
$(logname)
(также ${ logname;}
в некоторых оболочках, чтобы избежать подоболочки)$((1+1))
(также $[1+1]
в некоторых оболочках).$'\n'
или $"localized string"
.За исключением последнего случая, эти расширения / замены все еще происходят в двойных кавычках (и внутри $"..."
в bash
или ksh93
)
Чтобы это $
не обрабатывалось особым образом, вы должны указать это:
echo '$PATH'
или echo '$'PATH
. Тот, который вы обычно хотели бы использовать, поскольку он экранирует все символы (кроме себя) в большинстве оболочек.echo \$PATH
. Также внутри двойных кавычек:echo "\$PATH"
echo $'$PATH'
, echo $'\44PATH'
(при условии , совместимый набор символов ASCII),echo $'\u0024'
Или убедитесь, что это не является частью действительной формы расширения, как указано выше:
echo "$"PATH
echo $""PATH
,echo $"PATH"
ksh93
и bash
поддерживают $"..."
форму цитат.echo $``PATH
, Нет причин, почему вы хотели бы использовать это, кроме как показать, что это возможноecho "${$+$}PATH"
и другие запутанные ...Или вы можете вывести это $
другим способом:
echo
: echo '\044PATH'
(некоторые другие echo
потребности echo -e '\044PATH'
)printf '\44PATH\n'
кот << \ EOF $ PATH EOF
Обратите внимание на то, что эти обратные слеши должны быть заключены в кавычки, поскольку они также являются особенными для оболочки.
Надеюсь, к настоящему времени уже ясно, что хотя есть много способов сделать это, нет веской причины, по которой вы захотите использовать что-то еще, кроме как echo '$PATH'
здесь.
Обратите внимание, что литерал $ внутри двойных кавычек может быть проблемой. Это можно сделать, создав $ вне двойных кавычек, например:
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'
ВЫХОД:
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"
как уже объяснялось в другом ответе. Или printf '%s is the value of $term\n' "$term"
как ни в коем случае не следует использовать echo
для произвольных данных.
Использование:
echo ''\$PATH'' >> output.txt
Это будет работать
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'
. для получения дополнительной информации о цитировании, посетите это и это