我需要将二进制数据传递给接受命令行参数的bash程序。有没有办法做到这一点?
这是一个接受一个论点的程序:
script arg1
但是我不想使用字符串arg1
,而是传递一些不是很好的ASCII字符的字节 - 特别是字节0x02
,0xc5
和{{1 }}
我该怎么做?
答案 0 :(得分:20)
使用$''
引用样式:
script $'\x02\xc5\xd8'
测试:
printf $'\x02\xc5\xd8' | hexdump -C
00000000 02 c5 d8
答案 1 :(得分:19)
script "`printf "\x02\xc5\xd8"`"
script "`echo -e "\x02\xc5\xd8"`"
试验:
# echo -n "`echo -e "\x02\xc5\xd8"`" | hexdump -C
00000000 02 c5 d8 |...|
答案 2 :(得分:5)
Bash不擅长处理二进制数据。我建议使用base64对其进行编码,然后在脚本内部对其进行解码。
编辑提供一个例子:
script "$(printf '\x02\xc5\xd8' | base64 -)"
脚本内部:
var=$(base64 -d -i <<<"$1")
答案 3 :(得分:0)
这个怎么样?
$ script "`printf "\x02\xc5\xd8"`"
答案 4 :(得分:-1)
将二进制数据保存到文件中,然后执行:
script "`cat file`"