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 抱怨我没有提供密码。为了测试,我尝试了一些“回声”来证实我的怀疑。看起来我的赋值语句有什么问题吗?
您必须使用命令替换:
#Generate random password
PASSWORD=$(date +%s|sha256sum|base64|head -c 32)
echo $PASSWORD
Run Code Online (Sandbox Code Playgroud)
那么它应该工作。
更喜欢“$”符号,在此处阅读更多信息:在 shell 脚本中使用反引号或美元
您需要使用命令替换引号,例如
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)
仅根据当前时间生成密码非常糟糕。
因为你想要一个 32 个字符的密码,我会做这样的事情:
PASSWORD=$(head -c 16 /dev/random | md5sum | cut -f 1 -d\ )
Run Code Online (Sandbox Code Playgroud)