将随机生成的密码设置为变量?

sea*_*ean 4 command-line bash scripts

我正在使用以下行在 bash 脚本中创建随机生成的密码,但看起来该字符串实际上并未设置为变量。

#Generate random password
PASSWORD=date+%s|sha256sum|base64|head -c 32;
echo $PASSWORD
Run Code Online (Sandbox Code Playgroud)

当我稍后在此脚本中引用 $PASSWORD 时,drush 抱怨我没有提供密码。为了测试,我尝试了一些“回声”来证实我的怀疑。看起来我的赋值语句有什么问题吗?

TuK*_*Ksn 6

您必须使用命令替换

#Generate random password
PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD
Run Code Online (Sandbox Code Playgroud)

那么它应该工作。

更喜欢“$”符号,在此处阅读更多信息:在 shell 脚本中使用反引号或美元


sou*_* c. 5

您需要使用命令替换引号,例如

PASSWORD=`date +%s|sha256sum|base64|head -c 32`
echo $PASSWORD
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做,

PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD
Run Code Online (Sandbox Code Playgroud)

  • 首选第二种类型,因为它更直观/可见,并且还可以轻松完成嵌套。 (3认同)

Áng*_*gel 5

仅根据当前时间生成密码非常糟糕。

因为你想要一个 32 个字符的密码,我会做这样的事情:

PASSWORD=$(head -c 16  /dev/random | md5sum | cut -f 1 -d\ )
Run Code Online (Sandbox Code Playgroud)