在KSH

2010-07-31 50 views
1

生成12位十六进制数字,我需要在KSH在Solaris在KSH

产生12位进制数

感谢

回答

1

开始与这个Python程序,hex12.py

hex12.py

#!/usr/bin/env python 
import random 
import hashlib 
h= hashlib.sha1(str(random.random())).hexdigest() 
print h[:12] 

在您的外壳,你现在可以使用hex.py创建标准的12个十六进制数字出来。

+0

@S。洛特,我相信他需要使用ksh脚本的解决方案。 – Anders 2010-07-31 15:59:49

+0

他问ksh,我认为他需要一个korn shell脚本 – 2010-07-31 15:59:57

+0

这在ksh中有效。尝试一下。如果它具有'x'权限,则'#!/ usr/bin/env python'会导致ksh调用Python。每次。可靠。事实上,它几乎适用于所有的外壳。 – 2010-07-31 16:00:54

0

试试这个:

DIGITS=`head -c 6 /dev/urandom | od -x | head -n 1 | sed -e 's/^0* //' -e 's/ //g' 
4
#!/bin/ksh 
set -A hex 0 1 2 3 4 5 6 7 8 9 A B C D E F 
for i in {1..12} 
do 
    printf ${hex[$((RANDOM%16))]} 
done 
+0

好的解决方案,除了我可能会在循环之前添加一行,即RANDOM = 0x'head -c 4/dev/urandom | od -x |头-1 | cut -d''-f6' – fpmurphy1 2010-07-31 16:57:03

+0

这是行得通的,明天我上班时我会尝试一下 谢谢 – rojanu 2010-08-01 19:01:44

+0

这应该是模数16.你可以省略'$(())':'$ {六角[RANDOM%16]}'。你也可以做'hex =({0..9} {A..F})'。 (这些在ksh93中都是如此,我不确定早期版本) – 2010-08-02 00:47:13