首页 文章

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

提问于
浏览
0

我正在尝试进行二进制操作,然后将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 回答

  • 1

    这里有两个错误:

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

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

    其次,您的 bc 计算还有另一个问题:您无法指定 obase=2 after 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?

相关问题