This question already has answers here:
Closed 5 years ago.
How do I set a variable to the output of a command in Bash?
(14个答案)
我有这个密码:
# 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变量上生成随机密码。
谢谢您。

最佳答案

问题是最后一行SSHKEYPASS=randpass 10它分配randpass函数的返回状态,而不是randpass函数的输出,为了分配randpass function的输出,您必须使用process substitution如下

SSHKEYPASS=$(randpass 10)

上面的命令将用randpass函数的标准输出填充SSHKEYPASS

关于linux - Bash-将函数值设置为变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25911539/

10-09 13:27