Ini adalah pertanyaan yang agak hipotetis, jadi tolong jangan tanya saya mengapa saya ingin melakukan ini.
Dengan asumsi bahwa saya memiliki variabel GIF
yang berisi data biner, dan dengan asumsi bahwa saya tidak bisa menggunakan |
operator pipa , berikut ini harus menjadi cara yang benar untuk menggunakan operator 'triple-less-than':
openssl enc -base64 <<< $GIF
Namun, menurut saya itu <<<
bukan biner-aman dan karenanya data biner menjadi korup.
Apakah ada yang setara dengan biner-safe?
bash
redirection
Mikhail
sumber
sumber
$GIF
, sebagai permulaan, tidak memiliki biner penuh bahkan sebelum memulai. Namun, dengan pengecualian karakter NUL, itu menahan semua yang lain. (sebagai ref: vaab.blog.kal.fr/2014/05/03/... )Jawaban:
The disini String redirection (
<<<
) adalah bentuk sederhana dari sini dokumen pengalihan (<<
). Di sini pengalihan string bukan "biner safe"; Bash akan melakukan ekspansi pada string di sini. Selain itu, Bash akan menambahkan baris baru ke akhir dari string di sini (mengeluarkan perintahxxd -p <<< "foo"
dan Anda akan mendapatkan666f6f0a
balasannya).Anda hanya aman bertaruh, tidak termasuk pipa, adalah I / O redirection .
Pertanyaan serupa bukan yang aman biner di sini . Anda dapat menyimpan data yang disandikan dan mencoba ini
Namun ini tidak jauh dari
tetapi tanpa pipa metachar.
sumber
od -a <<< ""
dan Anda akan melihatnl
alih-alih nilai hex.Bash umumnya tidak aman biner, dan akan merusak null dan baris baru dalam variabel yang mengandung konten biner selama substitusi.
Jadi saya pikir jawabannya adalah "tidak" tetapi lebih mendasar "tidak dalam bahasa skrip shell" karena mereka semua tampaknya memiliki masalah dengan biner.
Namun saya katakan Anda berencana untuk mendapatkan data menjadi $ GIF, Anda sebaliknya memasukkannya ke dalam file, atau menggunakan python sebagai bahasa scripting alternatif yang akan menangani data biner tanpa masalah.
sumber