我想知道如何在我的bash腳本中製作一個攝氏字符,所以我可以在「CPU temp:50 C」行中更正輸出結果? 這種特殊字符的轉義序列是什麼,提供我的字體支持它們?如何在Bash腳本中爲conky創建特殊字符?
仍然抓我的頭......
更準確地說我需要它在Conky的 使用我用這個行:awk '{printf的($ 3" C「)}'。我應該如何糾正它,以便輸出攝氏度? 原因如果我直接插入℃字符,conky螺絲它。
我想知道如何在我的bash腳本中製作一個攝氏字符,所以我可以在「CPU temp:50 C」行中更正輸出結果? 這種特殊字符的轉義序列是什麼,提供我的字體支持它們?如何在Bash腳本中爲conky創建特殊字符?
仍然抓我的頭......
更準確地說我需要它在Conky的 使用我用這個行:awk '{printf的($ 3" C「)}'。我應該如何糾正它,以便輸出攝氏度? 原因如果我直接插入℃字符,conky螺絲它。
根據終端的設置,腳本輸出到終端的所有非控制字節序列都被解釋爲顯示。如果您將其配置爲將傳入數據解釋爲utf-8,則您在bash腳本中的所有操作都將按照utf-8的要求輸出攝氏字符。
設置您的終端權利取決於您使用的應用程序。它很可能已經處於utf-8模式。
爲了顯示您想要的字符,您需要查找其Unicode編碼點並使用utf-8編碼,或者您可以在某處查看字符的utf-8序列。例如,攝氏字符描述爲here。
攝氏度UTF-8序列是0xE2的0x84 0×83,所以你可以在使用$'string'
構建你的外殼,因爲它接受\xhh
逃生顯示它:
$ echo $'\xe2\x84\x83'
℃
或-e回聲:
$ echo -e '\xe2\x84\x83'
℃
另外,還可以將其分配給一個變量
$ CEL=$'\xe2\x84\x83'
$ echo $CEL
℃
如果你想顯示℃作爲兩個獨立的人物:人物等級和字母C,那麼你可以使用this character這個命令:
$ echo $'\xc2\xb0'C
°C
如果您正在使用的不支持$'string'
構建物的外殼,你也可以使用像Perl或Python工具:
$ python -c 'print "\xe2\x84\x83"'
℃
$ perl -e 'print "\xe2\x84\x83\n"'
℃
在GNU awk
你可以使用標準的C語言逃脫,包括\xhh
,例如:
$ awk 'BEGIN { print "\xe2\x84\x83"; }'
℃
$ awk 'BEGIN { print "\xc2\xb0\C"; }'
°C
請注意,需要額外的反斜槓來終止十六進制數字(沒有它,轉義序列消耗包括字母C的所有十六進制數字,請參閱GNU awk user's guide)。
awk
更便攜的解決方案是使用八進制序列。由於十六進制爲0xC2是八進制302和十六進制0XB0是八進制的260,你可以做到以下幾點:
$ awk 'BEGIN { print "\302\260C"; }'
°C
同樣,
$ awk 'BEGIN { print "\342\204\203"; }'
℃
沒有對°的轉義序列,據我知道的。
感謝你的幫助 – mountpeaks
我不能夠找到的'$'string''構建任何參考;它的確切名稱是什麼,或者它在哪裏記錄? – davide
'man bash'然後搜索'$'' –