Скажем, я должен использовать кавычки для инкапсуляции вывода subshell, например:
DATA="$(cat file.hex | xxd -r)"
Но мне нужно вложить такие вещи, как:
DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"
Я не могу использовать одинарные кавычки, потому что они не раскрывают переменные внутри них. Экранирование кавычек не работает, потому что они рассматриваются как пассивный текст.
Как мне справиться с этим?
DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
?Ответы:
Вам не нужно экранировать кавычки внутри подоболочки, так как текущая оболочка не интерпретирует их (
$(
на)
самом деле ничего не интерпретирует с по к ), и подоболочка не знает ни о каких приведенных выше кавычках.Цитировать подоболочку при назначении переменной тоже не нужно, для получения дополнительной информации см
man bash
.источник
Вам не нужно избегать вложенных кавычек внутри. Они разбираются правильно, на удивление!
источник