Bash - 将函数值设置为变量

时间:2014-09-18 11:31:55

标签: linux bash shell debian

我有这段代码:

# GENERATE RANDOM PASSWORD
#  $1 = number of characters; defaults to 32
#  $2 = include special characters; 1 = yes, 0 = no; defaults to 1
function randpass() {
  [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
    cat /dev/urandom | tr -cd "$CHAR" | head -c ${1:-32}
    echo
}

randpass
randpass 10
randpass 20 0

SSHKEYPASS = randpass 10

我希望能够生成随机密码并将其存储为变量。然而,虽然randpass工作得很好,但当我尝试将````SSHKEYPASS``设置为randpass的结果时,它不起作用。那么,我如何使用我的randpass函数在SSHKEYPASS变量上生成随机密码。

谢谢。

1 个答案:

答案 0 :(得分:1)

问题是最后一行SSHKEYPASS=randpass 10它的作用是它分配randpass函数的返回状态而不是randpass函数的输出,以便分配你有randpass function的输出使用process substitution如下

SSHKEYPASS=$(randpass 10)

上面的命令将使用randpass函数的标准输出

填充SSHKEYPASS