Наприклад, $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 $ ПАТ 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'
. Для отримання додаткової інформації про цитування, відвідайте це та це