基本上我想为变量 $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