如何在二进制操作中添加字符串,然后将其保存到bash中的.dat文件中

时间:2018-12-09 09:11:18

标签: linux bash shell

我正在尝试执行二进制操作,然后向其添加0b,然后将其保存到output.dat文件中。例如0b1101。但是似乎二进制操作会将自身覆盖到0b。

#!/bin/bash
binary="0b"
while IFS=" ," read  i1 i2 i3 #assigns each line into three seperate entity.
do
    #checks if it's in binary, decimal or hexadecimal
    if [[ $i1 == *"0b"* ]]; then #binary
            i1=${i1//$binary/}
            i3=${i3//$binary/}
            if [ "$i2" = "+" ]; then
                    echo "0b" >$HOME/Desktop/Homework_1/output.dat
                    echo "ibase=2;obase=2; $i1+$i3" | bc -l 
                  >$HOME/Desktop/Homework_1/output.dat

1 个答案:

答案 0 :(得分:1)

这里有两个错误:

首先,您要使用>重定向两个输出。您应该意识到,这将在写入之前清除目标文件的内容。要追加,请使用>>作为重定向运算符:

echo "ibase=2;obase=2; $i1+$i3" | bc -l >> $HOME/Desktop/Homework_1/output.dat
#                                       ^^

第二,bc的计算还有另一个问题:您不能在 obase=2之后指定ibase=2。您应该将其更改为:

echo "obase=2;ibase=2; $i1+$i3" | bc -l
# specify obase first

您可以在此处>> @ bc: Why does ibase=16; obase=10; FF returns FF and not 255?

了解更多有关此问题的信息。