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

标签 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

最佳答案

这里有两个错误:

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

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?

关于linux - 如何将字符串添加到二进制操作然后将其保存到 bash 中的 .dat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53690835/

相关文章:

使用 C 计算行数

json - 使用 jq 从数组中选择特定项目

android - 通过 adb 禁用和启用 android 触摸屏

c - 为什么连续写入会在缓冲区中保留4K字节?

linux - 如何在 Linux 中对 grep 的管道输出进行子字符串化?

linux - 在 unix 中移动一组文件

外部脚本函数上的 bash 命令替换收到不正确的退出状态

bash:在命令行中捕获 '\*'

linux - 转换后将文件移动到其原始位置

linux - 这个模拟 linux 的 readlink 的 os x bash 脚本是如何工作的?