【问题标题】:zenity --info dialog is unstablezenity --info 对话框不稳定
【发布时间】:2014-08-26 21:23:29
【问题描述】:

我有一个随机生成密码的脚本,我已经修改它以使用zenity 在 GUI 中显示。当我使用原始脚本时,我可以生成用户选择的任意长度的随机密码(我测试了 50,000)。这是代码:

    #!/bin/bash
    number=10
    echo "hello"
    echo "Please enter your number: $number"
    read newnumber
    # read newnumber
    [ -n "$newnumber" ] && number=$newnumber

    MATRIX="0123456789<?/_+-!@#$%^&*>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    #  Password will consist of standard characters.
    LENGTH=$newnumber
    #This variable can be changed for password lenth (need to try get zenity to let user choose that number)


    while [ "${n:=1}" -le "$LENGTH" ]
    # := is "default substitution" operator.
    # So, if 'n' has not been initialized, set it to 1.
   do
   PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
    # Very clever, but tricky.

    # Starting from the innermost nesting...
    # ${#MATRIX} returns length of array MATRIX.

    # $RANDOM%${#MATRIX} returns random number between 1
    # and [length of MATRIX] - 1.

    # ${MATRIX:$(($RANDOM%${#MATRIX})):1}
    # returns expansion of MATRIX at random position, by length 1. 
    # See {var:pos:len} parameter substitution in Chapter 9.
    # and the associated examples.

    # PASS=... simply pastes this result onto previous PASS (concatenation).

    # to let zenity show the password being built one character at a time, uncomment the following line
            # zenity --info --text="$PASS"
    let n+=1
    # Increment 'n' for next pass.
    done

    echo "$PASS"

(我从 [另一个问题][1] 开始跟进

[1]:Using a variable as another variable in a bash script?)

我现在的问题是,当尝试生成更长的密码时,它们不会显示在zenity --info 对话框中,超过 30 的任何内容都会被命中或错过。我已经通过反复运行脚本并每次选择 60 来显示一个 60 字符,但它还不够好,以至于不能被击中或错过,10 次中有 9 次会产生少于 20 个字符并且越长越挣扎它必须生成。但仅限于zenity

任何帮助当然都非常感谢。

【问题讨论】:

    标签: bash shell zenity


    【解决方案1】:

    我找到了答案,而且非常简单……字符 &lt;/@#&amp;* 与 zenity 一起使用时会导致生成器崩溃,但有人知道为什么吗?

    【讨论】:

    • 查看man bash 的保留字。您需要使用 `\` 转义几个字符,以防止它们被 shell 解释。 (或单引号将您的字符串分配给 MATRIX)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多