如何使用bash printf cmd以十六进制开头显示0

时间:2018-06-21 09:50:09

标签: bash shell printf

我需要创建一个脚本来计算Mac的地址。

问题是当我显示结果时,如果Mac地址以“ 0”开头,

示例:

  

对于08952A421DE8

     

显示8952A421DE8

我的printf是:

printf "NAME %s MACADDRESS \n" "${clientid[$i]}" "$((0x${mac[$i]}))" 

感谢帮助

1 个答案:

答案 0 :(得分:3)

您需要使bash意识到这是一个具有固定位数的十六进制数字。当前它只是一个任意字符串。

尝试一下:

printf "NAME %s MACADDRESS %012x\n" "${clientid[$i]}" "0x${mac[$i]}" 

使用%012x,您可以根据需要指定12个十六进制数字的格式,并以前导零表示。

printf会自行解释0x前缀,因此在这种情况下无需使用$((…))