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'

おすすめ記事