0
我正在寫一個小小的shell腳本,用於將ASCII字符轉換爲二進制,然後逐個從結果字節中獲取每一位。shell - 如何從一個字節中單獨獲取每一位?
這裏是我的代碼:
#!/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*"'
不知道你的意圖可以給什麼你告訴你」回覆 尋找。看看{typeset a =「10」;回聲「$ {a:1:1}」| perl -lpe'$ _ =解壓「B *」'; }結果。它是「00110000」,它是48的二進制表示,taht是字符串「01」的第二位置'0'的ASCII碼。 –