파일에 바이너리 콘텐츠를 추가하는 쉘 스크립트를 작성 중입니다. 나는 다음 명령을 사용해 보았습니다.
echo -en '\x61\x62\x63..' >> /tmp/myfile
그러나 결과는 다음과 같습니다.
-en \x61\x62\x63..
매번 모든 내용을 삭제하지 않고도 파일에 콘텐츠를 추가할 수 있는 방법이 있습니까?
노트
시스템에서 이 작업을 수행하려고 합니다.오직예 /bin/sh
, 이 명령은 제대로 작동 bash
하지만 기본 셸을 사용할 때는 작동하지 않습니다.
답변1
Bash에는 echo
내장 함수가 있으므로 이러한 동작이 발생합니다. sh 에는 내장되어 있지 않습니다 . 좋다쉿다양한 내장 "echo" 명령을 사용하세요.
/bin/echo
그러니 사용하지 않는 대신 사용해 보세요 /bin/
.
답변2
이식성을 고집하고 싶다면 사용할 수 없습니다에코또는인쇄 기능, 둘 다 지정되지 않은 이스케이프 시퀀스를 \xXX
POSIX 정의로 처리합니다.
GNU 시스템에서도 의 동작은 echo
내장되어 있거나 /bin/echo
변경될 수 있습니다. 당신은 시도 할 수 있습니다:
$ POSIXLY_CORRECT=1 /bin/echo -en '\x61'
-en \x61
$ env BASHOPTS=xpg_echo POSIXLY_CORRECT=1 bash -c "echo -en '\x61'"
-en a
(읽어야 해.이것자세한 내용은).
표준 POSIX 도구 상자를 사용하면 다음을 사용할 수 있습니다 awk
.
$ awk 'BEGIN{printf "%c%c%c..", 97, 98, 99}'
abc..