我需要将二进制数据传递给一个接受命令行参数的bash程序。有没有办法做到这一点?
它是一个接受一个参数的程序:
script arg1
但是,我不想传递字符串arg1
,而是传递一些不是好的ASCII码字符的字节-特别是字节0x02
、0xc5
和0xd8
。
我该怎么做呢?
发布于 2012-02-29 01:57:39
script "`printf "\x02\xc5\xd8"`"
script "`echo -e "\x02\xc5\xd8"`"
测试:
# echo -n "`echo -e "\x02\xc5\xd8"`" | hexdump -C
00000000 02 c5 d8 |...|
发布于 2012-02-29 21:27:44
使用$''
报价样式:
script $'\x02\xc5\xd8'
测试:
printf $'\x02\xc5\xd8' | hexdump -C
00000000 02 c5 d8
发布于 2012-02-29 01:48:48
Bash不擅长处理二进制数据。我建议使用base64对其进行编码,然后在脚本中对其进行解码。
编辑后提供一个示例:
script "$(printf '\x02\xc5\xd8' | base64 -)"
在脚本内部:
var=$(base64 -d -i <<<"$1")
https://stackoverflow.com/questions/9487037
复制相似问题