Katakanlah saya harus menggunakan tanda kutip untuk merangkum keluaran subkulit seperti:
DATA="$(cat file.hex | xxd -r)"
Tapi saya perlu membuat sarang seperti ini:
DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"
Saya tidak dapat menggunakan tanda kutip tunggal karena itu tidak memperluas variabel yang ada di dalamnya. Melarikan diri dari kutipan tidak berfungsi karena mereka hanya diperlakukan sebagai teks pasif.
Bagaimana saya menangani ini?
DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
?Jawaban:
Anda tidak perlu menghindari tanda kutip di dalam subkulit, karena shell saat ini tidak menafsirkannya (sebenarnya tidak mengartikan apa pun dari
$(
hingga)
, sebenarnya), dan subkulit tersebut tidak tahu tentang tanda kutip yang ada di atas.Mengutip subkulit pada penugasan variabel juga tidak perlu, untuk info lebih lanjut lihat
man bash
.sumber
Anda tidak perlu melarikan diri dari kutipan bersarang di dalamnya. Mereka diurai dengan benar, secara mengejutkan!
sumber