使用 echo 与 bc 命令一起通过管道分配值并使用变量作为参数

使用 echo 与 bc 命令一起通过管道分配值并使用变量作为参数

基本上我想为变量 $finalbyte 分配一个值(它由字节的二进制表示形式组成,例如 11100000)。因此,我尝试将以下内容作为某些脚本的一部分:

field4=224     ##224 for example, it could be any number.
               ##Depends on the script

finalbyte=$(echo 'obase=2; ibase=10; ${field4}' | bc)   ##<-------error here

我收到以下错误,这有点容易解释,但我的问题是我不知道或想象 $field4 可以嵌套在其他参数之间的方式。错误是:

(standard_in) 1: illegal character: $

答案1

使用双引号代替单引号。单引号内的参数不会被替换

 finalbyte=$(echo "obase=2; ibase=10; ${field4}" | bc)

另外,如果您使用的是 bash,则在这种情况下您可能更喜欢使用此处字符串而不是命令替换:

bc <<<"obase=2; ibase=10; ${field4}"

答案2

将变量移到引用的参数之外以进行回显:

$ field4=224 finalbyte=$(echo 'obase=2; ibase=10;' ${field4}| bc )
$ echo $finalbyte
11100000

相关内容