用于将IP地址字符串转换为十六进制格式的Bash脚本

San*_*osh 8 bash

IP_ADDR=192.168.1.128

printf '%02X' ${IP_ADDR//./ }; echo

IP_ADDR=192.168.1.128

printf '%02X' ${IP_ADDR//./ }; echo

IP_ADDR=192.168.1.128

printf '%02X' ${IP_ADDR//./ }; echo

有人可以解释这个简单的oneliner如何将IP_ADDR转换为十六进制格式?我正试图找到一些关于这种行为的文档.

Ign*_*ams 8

Shell参数扩展

$ IP_ADDR=192.168.1.128
$ echo ${IP_ADDR//./ }
192 168 1 128
$ printf '%02X' 192 168 1 128 ; echo
C0A80180
Run Code Online (Sandbox Code Playgroud)

  • @GaneshSatpute这将扭转它:`printf'%d.%d.%d.%d \n'\`echo 4A3EBA33 | sed -r's /(..)/ 0x\1/g'\``每两位数转换为"0xN",其中N是两位数.然后printf将每个十六进制值转换为十进制数并放入一个'.' 在他们之间. (2认同)