그래, 이것이 해커 란 문제 (https://www.hackerrank.com/challenges/bash-tutorials---arithmetic-operations)입니다. 기본적으로 입력은 산술 표현식이며 형식화 된 응답 (소수점 이하 3 자리)을 인쇄해야합니다. 나는 이것을 처음 시도했다.printf % .3f와 bc 반올림 동작의 차이점
read exp
echo "scale = 3; $exp" | bc -l
몇 가지 테스트를 통과했지만 첫 번째 테스트는 통과하지 못했다.
5+50*3/20 + (19*2)/7
대답은 17.929
이지만 내 코드는 17.928
입니다. 이 코드를 대신
read exp
printf "%.3f\n" `echo $exp | bc -l`
주를 시도 : 에코 부분은 역 따옴표에 있어야하지만 블록 따옴표와 혼동하지 않도록 ''했습니다. 모든 검사가 통과되었습니다. 차이점은 무엇입니까?
역행은 한 줄 미만의 코드 서식에만 적합합니다. 여러 줄로 된 세그먼트의 경우 코드 서식에 들여 쓰기를 사용합니다 (코드 단추를 클릭하면 자바 스크립트 편집기에서 수행 할 작업). –
... 번갈아서,'\'... \''대신에'$ (...)'을 사용하십시오. 이것은 현대적인 POSIX 문법이고, 중첩하는 것이 덜 어렵습니다. –
.... 또한 -'echo "$ exp"| bc -l'이 아니라'echo $ exp | bc -l'; 표현식에'*'주위에 공백이 있으면 따옴표없이 매우 놀랄만 한 행동을 보입니다 (공백 없이도 쉘에'nullglob' 옵션이 활성화 된 경우 놀라운 동작을 보입니다). –