Unixシェルで(コマンドなしで)ASCIIコード(たとえば、または-
など_
)を16進表現に変換したい(例:=>)。.
bc
-
%2d
どんなアイデアがありますか?
ベストアンサー1
printf
C関数をシミュレートするツールは通常存在します/usr/bin/printf
が、多くのシェルでもそれに対する組み込み機能を実装しています。これを使用して%02x
文字の16進表現を取得できますが、渡す文字列に一重引用符(編集する:最初に一重引用符を追加するだけで十分であることがわかりました。):
printf "%%%02x\n" "'-" # Outputs %2d
便宜上、次のようにシェル関数を作成できます。
function hex() {
printf "%%%02x\n" "'$1"
}
hex - # Outputs %2d
hex _ # Outputs %5f
hex . # Outputs %2e