Вкладені котирування в підрозділах


13

Скажіть, що я маю використовувати лапки, щоб інкапсулювати вихідний пакет, наприклад:

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)")"?
cuonglm

Відповіді:


19

Вам не потрібно , щоб уникнути лапок усередині субоболочкі, так як поточна оболонка Не брати до уваги їх (це нічого не інтерпретує від $(до ), на самом деле), і подоболочка не знає про яку - або цитаті, які вище.

Цитування підзаголовка при призначенні змінної теж непотрібне, для отримання додаткової інформації див man bash.


1
Це залежить від того, що ви намагаєтеся зробити, але зазвичай це найкраща практика. Дивіться github.com/koalaman/shellcheck/wiki/Sc2086
LPCRoy

8

Вам не потрібно уникати вкладених цитат всередині. Вони розбираються належним чином, дивно!

DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.