หลังจากที่ฉันใช้คำสั่งต่อไปนี้
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
ฉันไม่สามารถเปิด tmp.png เป็นไฟล์ PNG ได้ ข้อมูลบางอย่างอาจหายไปเมื่อฉันใช้$pngString
เพื่อจัดเก็บไฟล์ภาพ
ดังนั้นคำถามคือฉันจะเก็บข้อมูลภาพทั้งหมดโดยใช้ตัวแปรในสคริปต์ทุบตีได้อย่างไร
cat
และecho
ทั้งหมดของตระกูลอยู่ที่ยูทิลิตี้ข้อความหัวใจ การปล่อยให้พวกเขาคลายความไม่มั่นใจในไฟล์ไบนารีจะมีผลลัพธ์ที่ไม่สามารถคาดการณ์ได้ นั่นเป็นเหตุผลที่สิ่งต่าง ๆ เช่นbase64
ถูกคิดค้น
cat example.png > tmp.png
หรือยังดีกว่าcp example.png tmp.png
?
cat
ไม่ได้เป็นยูทิลิตี้ข้อความจริงๆ มันเป็นแทนคำสั่ง (ซึ่งแถบบรรทัดใหม่ต่อท้าย) การกำหนดตัวแปร (ซึ่งไม่สามารถมี null ไบต์) และecho
คำสั่ง (ซึ่งอาจตีความลำดับทับขวา) cat
ซึ่งจะทำให้เสียไบนารีไม่ แต่ฉันเห็นด้วยกับประเด็นโดยรวมของคุณ