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

Vai*_*los 0 bash bash-script

基本上我想为变量 $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
Run Code Online (Sandbox Code Playgroud)

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

(standard_in) 1: illegal character: $
Run Code Online (Sandbox Code Playgroud)

iru*_*var 5

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

 finalbyte=$(echo "obase=2; ibase=10; ${field4}" | bc)
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用的是 bash,对于这种情况,您可能更喜欢使用 here-strings 代替命令:

bc <<<"obase=2; ibase=10; ${field4}"
Run Code Online (Sandbox Code Playgroud)