我试图制作一个将二进制数计算为十进制的小脚本。它是这样工作的:
- 获取 '1' 或 '0' 数字作为 SEPARATE 参数。例如“./bin2dec 1 0 0 0 1 1 1”。
- 对于每个参数位:如果是“1”,则将其乘以相应的 2 的幂(在上述情况下,最左边的“1”将为 64),然后将其添加到“和”变量中。
这是代码(在指出的地方是错误的):
#!/bin/bash
p=$((2**($#-1))) #Finds the power of two for the first parameter.
sum=0 #The sum variable, to be used for adding the powers of two in it.
for (( i=1; i<=$#; i++ )) #Counts all the way from 1, to the total number of parameters.
do
if [ $i -eq 1 ] # *THIS IS THE WRONG POINT* If parameter content equals '1'...
then
sum=$(($sum+$p)) #...add the current power of two in 'sum'.
fi
p=$(($p/2)) #Divides the power with 2, so to be used on the next parameter.
done
echo $sum #When finished show the 'sum' content, which is supposed to be the decimal equivalent.
我的问题在注意点(第 10 行,包括空白行)。在那里,我正在尝试检查每个参数的内容是否等于 1。如何使用变量来执行此操作?
例如,$1 是第一个参数,$2 是第二个参数,以此类推。我希望它像 $i,其中 'i' 是每次增加一的变量,以便它匹配下一个参数。
除其他外,我试过这个:'$(echo "$"$i)' 但没有用。
我知道我的问题很复杂,我努力尽可能地把它说清楚。有什么帮助吗?