답변:
여기 문자열 리디렉션 ( <<<
)의 간단한 양식입니다 여기에 문서 리디렉션 ( <<
). 여기서 문자열 리디렉션은 "이진 안전"이 아닙니다. Bash는 here 문자열에서 확장을 수행합니다. 또한 Bash는 here 문자열의 끝에 줄 바꿈을 추가합니다 (명령을 실행 xxd -p <<< "foo"
하면 666f6f0a
반환됩니다).
파이프를 제외한 유일한 안전한 방법은 I / O 리디렉션 입니다.
유사하지 바이너리 안전 질문 여기 . 인코딩 된 데이터를 저장하고 시도해 볼 수 있습니다
COMMAND_WITH_BIN_INPUT <(uudecode <(echo "$uuEncodedData"))
그러나 이것은 멀지 않습니다
echo "$uuEncodedData"|uudecode|COMMAND_WITH_BIN_INPUT
파이프 메타 문자가 없습니다.
od -a <<< ""
하십시오 nl
.
Bash는 일반적으로 이진 안전하지 않으며 대체 중에 이진 내용을 포함하는 변수의 null 및 개행을 손상시킵니다.
그래서 대답은 "아니오"이지만 더 근본적으로는 "쉘 스크립팅 언어가 아님"이라고 생각합니다. 왜냐하면 모두 바이너리에 문제가있는 것 같습니다.
그러나 데이터를 $ GIF로 가져 오거나 대신 파일로 가져 오거나 python을 문제없이 이진 데이터를 처리하는 대체 스크립팅 언어로 사용하려고합니다.
$GIF
시작을위한 변수 는 시작하기 전에도 전체 이진을 유지하지 않습니다. 그러나 NUL 캐릭터를 제외하고는 다른 모든 캐릭터를 보유하고 있습니다. (ref : vaab.blog.kal.fr/2014/05/03/… )