Bash 如何用八进制值写字符串

Bash 如何用八进制值写字符串,bash,Bash,在bash中,我想编写字符串“BLA\1” 因此它将是一个缓冲区424c4101,但结果是424c415c31 要完成此操作,在python中,如果在二进制文件中写入“BLA\1”,则“\1”将被解释为“1” 那么,如何在bash中正确编写字符串“BLA\1” 使用$''特殊引号: echo -n $'BLA\1' | xxd 00000000: 424c 4101 BLA. 使用POSIX标准定义的printf: printf '

在bash中,我想编写字符串
“BLA\1”
因此它将是一个缓冲区
424c4101
,但结果是
424c415c31

要完成此操作,在python中,如果在二进制文件中写入
“BLA\1”
,则
“\1”
将被解释为
“1”

那么,如何在bash中正确编写字符串“BLA\1”

使用
$''
特殊引号:

echo -n $'BLA\1' | xxd
00000000: 424c 4101                                BLA.

使用POSIX标准定义的
printf

printf 'BLA\1'
一些特定于bash的选项:

# Let echo expand the escape code
echo -ne 'BLA\1'

# Use $'...', as in choroba's answer
echo -n $'BLA\1'

@Nicosmik在StackOverflow=Upvote和/或Accept上说:“谢谢”。
printf'BLA\1'| xxd
工作正常,但
echo-e'BLA\1'
添加一个LF字符我忘记了
-n
选项以抑制
echo
添加的换行。不过,我不完全清楚为什么我在这个答案中加入了
echo
printf
可移植且可靠。