다음 명령을 사용한 후
pngString="$(cat example.png)"
echo -n "$pngString" > tmp.png
tmp.png를 PNG 파일로 열 수 없습니다. $pngString
이미지 파일을 저장하는 데 사용할 때 일부 정보가 손실 될 수 있습니다.
그래서 질문은 : bash 스크립트에서 변수를 사용하여 완전한 이미지 정보를 어떻게 저장할 수 있습니까?
cat 명령은 이미지 데이터를 변수에 저장하기 위해 정상적으로 작동합니다. 큰 따옴표 만 제거하십시오. 문제는 변수에 변수를 저장 한 후이 데이터로 무엇을하고 싶습니까?
—
coffeMug
cat
그리고 echo
모든 일리가 핵심 텍스트 유틸리티에 있습니다. 바이너리 파일에서 의심 할 여지없이 느슨하게하면 예기치 않은 결과가 발생합니다. 그것이 같은 base64
것들이 발명 된 이유 입니다.
왜 변수로 사용하고 싶습니까? 셸 변수는 일반적으로 대량의 이진 데이터가 아니라 소량의 텍스트를 저장하기위한 것입니다. 일반적인 쉘은 zsh를 제외하고 변수의 이진 데이터 (널 바이트에서 질식)에 대처할 수 없습니다.
—
Gilles 'SO- 악의를 멈춰라'
왜
—
와일드 카드
cat example.png > tmp.png
아직 또는 더 나은가 cp example.png tmp.png
?
@Shadur
—
와일드 카드
cat
는 실제로 텍스트 유틸리티가 아닙니다. 명령 대체 (후행 줄 바꿈), 변수 할당 (널 바이트를 포함 할 수 없음) 및 echo
명령 (백 슬래시 시퀀스를 해석 할 수 있음)은 바이너리가 아닌 바이너리를 엉망으로 cat
만듭니다. 그러나 나는 당신의 전반적인 요점에 동의합니다.