bc 명령과 함께 echo를 사용하여 파이프를 통해 값을 할당하고 변수를 매개 변수로 사용

bc 명령과 함께 echo를 사용하여 파이프를 통해 값을 할당하고 변수를 매개 변수로 사용

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

관련 정보