使用灰,我有一个IP地址作为一个variables
IP_ADDR = 192.168.1.234
我想写4个字节到一个二进制文件,然后重新读取它们,并重新构buildIPstring。
我有以下的工作解决scheme,但它似乎很hacky – 有什么更好的build议?
写:
IP_ADDR=192.168.1.234 serialHex=`printf '%02X' ${IP_ADDR//./ } | sed s/'\(..\)'/'\\\\x\1'/g` echo -n -e $serialHex | dd bs=1 of=/path/to/file seek=19 &> /dev/null
注意seek = 19表示二进制文件(在字节19)写入的位置
读:
hexValues=`od -j 19 --read-bytes=4 --address-radix=n -t x1 /path/to/file` set $hexValues for w; do echo -n "$((0x$w))."; done | sed s/.$//
function ip_write { local FILE=$1 IP=$2 NUMS T IFS=. read -a NUMS <<< "$IP" printf -v T '\\x%x\\x%x\\x%x\\x%x' "${NUMS[@]}" printf "$T" > "$FILE" } function ip_read { local FILE=$1 NUMS read -a NUMS < <(exec od -N4 -An -tu1 "$FILE") local IFS=. IP="${NUMS[*]}" }
用法示例:
# Saves IP to file: > ip_write ip.txt 10.0.0.1 > hexdump -C ip.txt 00000000 0a 00 00 01 |....| # Reads IP from file: > ip_read ip.txt > echo "$IP" 10.0.0.1