Shell
無法將 ascii 值儲存在變數中
我正在嘗試將十六進制轉換為十進製到 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)