기본적으로 $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