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