![echo 변수 바로 뒤에 문자가 옵니다.](https://linux55.com/image/227498/echo%20%EB%B3%80%EC%88%98%20%EB%B0%94%EB%A1%9C%20%EB%92%A4%EC%97%90%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%EC%98%B5%EB%8B%88%EB%8B%A4..png)
p=$( power )
echo "Power now: ${p}W"
인쇄
Wower now: 357
이것은 말이 되지 않습니다. 이건 확실히 버그인가요?
답변1
Wower now: 357
아 예, 이것은 실제로 바이트 단위로 다음과 같은 순서입니다.
P (0x50)
o (0x6f)
w (0x77)
e (0x65)
r (0x72)
(0x20)
n (0x6e)
o (0x6f)
w (0x77)
: (0x3a)
(0x20)
3 (0x33)
5 (0x35)
7 (0x37)
jump-back-to-beginning-of-line (0x0d) ## called "carriage return", if you know typewriters…
W (0x57)
따라서 power
인간에게 알려지지 않은 이유로 명령이 출력됩니다 357\r
(캐리지 리턴) .
해결 방법: 에서 실제 숫자를 인쇄하세요 power
. 예를 들면 다음과 같습니다.
p=$( power | grep -o '[[:digit:]]*' )
echo "Power now: ${p}W"
또는 더 간결하게:
power | sed -n 's/^\([[:digit:]]*\).*$/Power now: \1 W/p'