Как я могу заключить в скобки, чтобы предотвратить интерпретацию Bash? Я знаю, что это возможно для замены команды:

echo \"`echo "I will be in quote"`\"
echo \"$(echo "I will be in quote")\" # same meaning

Несмотря на это, я попытался использовать обратную косую черту, но она становится нечитаемой по мере роста рекурсии.

echo "\"I'm in quote\""
echo %("I'm in quote") # % is what I look for

2 ответа2

2

Если вы просто хотите отобразить двойные кавычки, вы можете использовать одинарные кавычки вокруг всего выражения:

echo '"I am quoted."'

Однако это становится трудным для использования, если вы хотите выводить одинарные кавычки.

Чтобы напечатать строку или блок текста, который содержит как одинарные, так и двойные кавычки, вы можете использовать документ here, который полностью избегает кавычек:

cat << EOT 
"I am quoted."
"I'm quoted as well."
EOT

Вам не нужно использовать EOT. Подойдет любое другое слово.

0

Я не совсем уверен, что вы действительно хотите. Вот несколько альтернатив:

var="\"I'm in quotes\""
echo "$var"
var="I'm in quotes"
echo "\"$var\""
printf '"%s"\n' "I'm in quotes"
function echo_quoted () { printf '"%s"\n' "$*"; }
echo_quoted "I'm in quotes"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .