Bash에서 base64로 메시지 (특수 문자 포함 가능)를 디코딩합니다. 파일에 저장하면 48 바이트의 데이터가 생성됩니다. 그러나 변수에 전달하면 41 바이트의 문자열이됩니다. 이것은 Bash가 특수 문자를 처리하는 방식 (^ @)으로 인해 발생한다고 생각합니다. 예를 들어 Bash에서 바이트 배열 (특수 문자 포함 가능)
,meow_bash=`printf $variable | base64 --decode`
echo ${#meow_bash} # return 41
printf $variable | base64 --decode > meow
wc -c meow # return 48
지금은 데이터의 민감성으로 인해 파일에 배열을 저장하지 않으려면. 또한 쉘 스크립트를 사용해야합니다. bash/sh를 사용하여 성공적으로 패스 할 수있는 방법이 있습니까?
^@는 Null 바이트이며 bash 변수로 저장하거나 인수로 모든 프로그램에 전달할 수 없습니다. 바이너리 데이터에는 bash를 사용하지 마십시오. 당신은 base64를 저장할 수 있고, 언제든지 그것을 쓸 수 있습니다. –
IIRC 나는 bash (나는 구 버전이라고 생각한다) 문자 삭제 (hex 7f)에 혼란스러워했다. 로캘에 따라 일부 도구는 예를 들어 처리하기를 거부 할 수 있습니다. 유효하지 않은 UTF-8 시퀀스 및 ...이 때문에 이진 데이터를 처리하는 셸 도구는 base64 (또는 16 진수 또는 이와 유사한 형식) 또는 파이프를 통해 가져옵니다. –