我正在编写一个小shell脚本,用于将ASCII字符转换为二进制,然后分别从结果字节中获取每一位。
这是我的代码:
#!/bin/sh
binary=00000000
bit0=0
bit1=0
bit2=0
bit3=0
bit4=0
bit5=0
bit6=0
bit7=0
#main
read -p "Please enter your text: " word
for i in $(seq 1 ${#word})
do
binary=`echo ${word:i-1:1} | perl -lpe '$_=unpack"B*"'`
echo $binary
for n in $(seq 1 ${#binary})
do
eval "bit$n=${binary:i-1:1}"
done
echo $bit0
echo $bit1
echo $bit2
echo $bit3
echo $bit4
echo $bit5
echo $bit6
echo $bit7
done
sleep 5
因为这件作品无法正常工作:
for n in $(seq 1 ${#binary})
do
eval "bit$n=${binary:i-1:1}"
done
它应该为每个位#变量分配二进制变量中的正确数字。 你也可以向我解释这段代码,我不完全理解它:
echo ${word:i-1:1} | perl -lpe '$_=unpack"B*"'
答案 0 :(得分:0)
没关系,简单的复制和粘贴失败/错误:
eval“bit $ n = $ {binary: i -1:1}” eval“bit $ n = $ {binary: n -1:1}”