我在shell脚本中执行此命令。
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 66 j8 hj g7 d0 f5 a7 10 96 e0 99 99 99 99 c5 00
我想将99对的4对更改为我生成的相同随机值,我尝试了这段代码,但是我已经消耗了00.随机函数工作正常。
random="$(cat /dev/urandom | base64 | head -c 2)"
echo $random
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 66 j8 hj g7 d0 f5 a7 10 96 e0 $random $random $random $random c5 00
答案 0 :(得分:3)
问题很可能是cat /dev/urandom | base64 | head -c 2
不生成十六进制数。请尝试这种方式:
random=$(cat /dev/urandom | head -c 1 | xxd -p)
而不是使用cat
和head
,只使用xxd
会更简单,更清晰(感谢@kojiro提示!):
random=$(xxd -p -l1 < /dev/urandom)
答案 1 :(得分:0)
怎么样
random=$(printf "%02x\n" $((RANDOM % 256))) # zsh and bash
?
顺便说一句,如果你不需要十六进制数小于10的前导零,并且如果可以使用Zsh而不是bash,你也可以用以下方式做,这不需要{ {1}}子流程:
$(...)