Shell

無法將 ascii 值儲存在變數中

  • June 24, 2015

我正在嘗試將十六進制轉換為十進製到 ascii 並將其儲存在一個變數中。我正在使用以下程式碼。

HEX=30
DEC=`printf "%d\n" 0x${HEX}`
echo "$DEC"
ASC=`printf \\$(printf '%03o' $DEC)`
echo "$ASC"

我收到以下錯誤語法錯誤:

`(' unexpected

我正在使用 Solaris 10,並且ksh. 我不想對 ascii 使用函式並呼叫它來儲存值。我希望能夠在不使用函式的情況下做到這一點。

感謝 Jeff Schaller 糾正了我的語法錯誤。我找到了解決問題的方法,這在 Solaris 10 中有效。

script:

#!/bin/ksh
HEX=30
DEC=`printf "%d\n" 0x${HEX}`  ##Converted Hex to decimal
echo "$DEC"
OCT=$(printf '%o' $DEC)   ##Converted decimal to octal
echo "$OCT"
ASCI=$(printf \\$OCT)  ##Finally converted OCTAL to ASCII.
echo "$ASCI"

output:

48
60
0

顯然,在列印成 ASCII 之前,我們必須將十進制轉換為八進制。

你錯誤地逃避了$兩次,導致printf看到printf \$( ...而不是(我假設你想要的)替換內部 printf 結果。為此,您可以將整個語句簡化為:ASC=$(printf '%03o' $DEC)

引用自:https://unix.stackexchange.com/questions/211715