echo 변수 바로 뒤에 문자가 옵니다.

echo 변수 바로 뒤에 문자가 옵니다.
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'

관련 정보