BASH - 赋值给变量
问题描述:
的openSUSE 13.2BASH - 赋值给变量
我试图分配一个随机值rand
和接口来mac
我已经试过以下的MAC地址,但他们没” t似乎工作。
rand=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1)
eth=$(<ifconfig eth0 | awk '/HWaddr/ {print $5}')
rand
应该是包含字母和数字组合的6位数字符串。
任何想法如何做到这一点?
感谢
答
一个更好的方式来获得一个随机字符串可能是这样的:
rand=$(head -c 32 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9' | head -c 6)
我们第一次抢到32个字节的随机性,饲料,首先要base64
,然后tr
获得更清晰字符,并删除所有但想要的字符,最后只抓取前012个字节的head
。 (没有中间的base64
,某些字符串可能不包含6个字符)。
这远非最佳解决方案,但应该产生6个字母数字字符,具有很高的确定性。
用于读取MAC地址,你应该使用类似:
# bash process substitution reads the redirected output to a variable
eth=$(</sys/class/net/eth0/address)
随着ifconfig
更意味着手动使用和解析输出是恐怖。
开始删除'
那么,什么是与随机值的交易,你为什么要传递和折叠? – 123
@ 123我试图返回一个包含字母和数字组合的6位字符串。 – Tom