как добавить строку в бинарную операцию, а затем сохранить ее в файл .dat в bash - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь выполнить двоичную операцию, затем добавить к ней 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 голосов
/ 09 декабря 2018

Здесь есть две ошибки:

Во-первых, вы перенаправляете оба выхода с помощью >.Вы должны знать, что это очистит содержимое целевого файла перед записью.Чтобы добавить, используйте >> в качестве оператора перенаправления:

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: почему ibase=16; obase=10; FF возвращает FF, а не 255?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...