サブシェル内のネストされた引用符


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)")"か?
クオンルム

回答:


19

サブシェル内の引用符をエスケープする必要はありません。現在のシェルはそれらを解釈せず(実際には$(to から何も解釈しないため))、サブシェルは上記の引用符を認識しないためです。

変数の割り当て時にサブシェルを引用することも不要man bashです。詳細については、を参照してください。


1
何をしようとしているのかにもよりますが、通常はベストプラクティスです。参照してくださいgithub.com/koalaman/shellcheck/wiki/Sc2086
LPCRoy

8

ネストされた引用符を内部でエスケープする必要はありません。驚くほど適切に解析されます!

DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.