【问题标题】:Generate 12 Digit HEX number in KSH在 KSH 中生成 12 位十六进制数
【发布时间】:2011-03-23 16:02:45
【问题描述】:

我需要在 Solaris 上的 KSH 中生成 12 位十六进制数

谢谢

【问题讨论】:

    标签: linux scripting solaris ksh


    【解决方案1】:
    #!/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
    

    【讨论】:

    • 很好的解决方案,除了我可能会在循环之前添加一行,即 RANDOM=0xhead -c 4 /dev/urandom | od -x | head -1 | cut -d' ' -f6
    • 这个很好用,我明天上班后试一试,谢谢
    • 那应该是模数 16。你可以省略 $(()): ${hex[RANDOM%16]}。你也可以hex=({0..9} {A..F})。 (这些在 ksh93 中是正确的。我不确定早期版本。)
    • 这在 Solaris 机器上不起作用 /bin/ksh 版本 M-11/16/88i /usr/dt/bin/dtksh 版本 M-12/28/93d 在两个 SunOS 5.10 上测试Generic_142901-11 i86pc i386 i86pc SunOS 5.9 Generic_118558-27 sun4u sparc SUNW,Sun-Fire-280R
    【解决方案2】:

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

    hex12.py

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

    在您的 shell 中,您现在可以使用 hex.py 在标准输出上创建 12 个十六进制数字。

    【讨论】:

    • @S. Lott,我相信他需要使用 ksh 脚本的解决方案。
    • 他要求 ksh,我想他需要一个 korn shell 脚本
    • 这适用于 ksh。试试吧。如果它有x 权限,那么#!/usr/bin/env python 会导致ksh 调用Python。每次。可靠。事实上,它几乎适用于所有 shell。
    • @S.洛特,这是一个静音点。你可以用 Java 写它,它会工作,他需要一个 KSH 脚本语言的解决方案,否则我相信他会说些什么。
    • @Anders:它在 Java 中不会轻易工作。你必须编译它并从中生成一个可执行的 JAR。在 Python 中,它就像是 ksh 的一部分一样工作。
    【解决方案3】:

    试试这个:

    DIGITS=`head -c 6 /dev/urandom | od -x | head -n 1 | sed -e 's/^0* //' -e 's/ //g'
    

    【讨论】:

      【解决方案4】:

      由于 RANDOM 变量生成一个 15 位数字(从 0 到 32767),您可以连接多个 RANDOM 值。

      您将需要一个 48 位数字,因为 12 个十六进制数字是 12 * 4 = 48 位。

      要么:

      $ printf '%x\n' $(( ((RANDOM<<15|RANDOM)<<15|RANDOM)<<3|RANDOM%8 ))
      9142467b46d3
      

      或者:

      $ printf '%x' $((RANDOM%4096)) $((RANDOM%4096)) $((RANDOM%4096)) $((RANDOM%4096)); echo
      808878c21e19
      

      【讨论】:

        猜你喜欢
        • 2017-06-17
        • 2018-07-09
        • 2012-06-19
        • 1970-01-01
        • 2018-06-07
        • 2012-01-03
        • 2016-02-04
        • 2013-02-20
        • 2010-11-06
        相关资源
        最近更新 更多