shell - 如何从一个字节单独获取每个位?

时间:2017-08-11 07:57:23

标签: shell loops binary

我正在编写一个小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*"'

1 个答案:

答案 0 :(得分:0)

没关系,简单的复制和粘贴失败/错误:

eval“bit $ n = $ {binary: i -1:1}” eval“bit $ n = $ {binary: n -1:1}”