Alt kabuklarda iç içe alıntılar


13

Diyelim ki subshell çıktısını kapsüllemek için tırnak işareti kullanmak zorundayım:

DATA="$(cat file.hex | xxd -r)"

Ama bu tür şeyleri iç içe geçirmem gerekiyor:

DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"

Tek tırnak kullanamıyorum çünkü bunlar içlerindeki değişkenleri genişletmiyor. Alıntılardan kaçmak işe yaramıyor çünkü sadece pasif metin olarak değerlendiriliyorlar.

Bunu nasıl halledebilirim?


Neden kullanmıyorsun DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"?
cuonglm

Yanıtlar:


19

Beri, bir kabuktaki içindeki tırnak kaçmak gerekmez geçerli kabuk bunları yorumlamaz (o bir şey yorumlayamaz $(için )aslında) ve altkabuk üzerindedir herhangi tırnak haberi yok.

Değişken atamada alt kabuktan alıntı yapmak da gereksizdir, daha fazla bilgi için bkz man bash.


1
Ne yapmaya çalıştığınıza bağlıdır, ancak genellikle en iyi uygulamadır. Bkz. Github.com/koalaman/shellcheck/wiki/Sc2086
LPCRoy

8

İçerideki iç içe tırnaklardan kaçmanıza gerek yoktur. Şaşırtıcı bir şekilde düzgün ayrıştırılırlar!

DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.