답변:
bash를 사용하는 경우 다음과 같이 파이프 대신 here 문자열을 사용하는 것이 좋습니다.
bc <<< "scale=2;$var1/$var2"
그러면 서브 쉘이 절약됩니다.
그런 다음 명령의 출력을 저장하려면 명령 대체를 사용하십시오.
answer=$(bc <<< "scale=2;$var1/$var2")
보다 더 멋진 것을 원한다면 bc
dc (역 폴란드 계산기)가 있습니다.
answer=$(dc <<< "2k $var1 $var2/p")
|
오른쪽의 명령이 서브 쉘에서 실행되며, 새로운 서브 쉘을 여는 데 자원이 필요합니다 (해당 명령을 실행하기 위해 새 bash 인스턴스를 여는 것과 같습니다). 피할 수 있다면 피하십시오. 여기서,이 배관 echo
에 bc
명령을 실행 bc
bash는이 멋진 여기에 문자열 구조가 있기 때문에 서브 쉘에서이며, 어떤 의미에서, (악의)을 지체하지 <<<
이런 바보 같은 짓을 피할 수 있습니다.
/bin/sh
bash 대신 (대시)를 사용하지만 dash에는 없습니다 <<<
.
time for i in {1..10000}; do : <<< ""; done
와 time for i in {1..10000}; do echo "" | : ; done
는 극적인 차이를 볼 수 있습니다. 그렇다면 당신은 옳습니다. heredoc은 herestring보다 약간 빠릅니다. 그러나 하나의 라이너로 입력하는 것이 더 어색합니다.