尝试创建一个10个字符的密码并将其分配给变量并将其回送给stdout。
这是我到目前为止创建的脚本,但它不起作用。我知道还有其他方法可以做到这一点,但是当我涉及超过1步时,使用|
(管道)将信息从1个动作发送到另一个动作时,我从来都不是很好。
#!/bin/bash
tmp_pass=0
if [ $tmp_pass=0 ]; then
tmp_pass=`cat /dev/random`
tmp_pass=$(head tmp_pass -c 10 | base64)
echo $tmp_pass
fi
理想情况下,我想要的是这样的例子:
tmp_pass
)0
eq 0
,则为其指定新作业 注意:上面我的原始脚本中没有显示,但它确实使用echo filename(1:10)
或类似内容来查看它以限制它回显行的前10个字符1。
我知道这可以在一行中完成,但我不确定如何写出来,任何例子都会非常感激。
答案 0 :(得分:4)
这里的问题是你试图用cat /dev/random
读取输入流,它本身永远不会终止(例如,尝试cat /dev/stdin
同样如此)。您可以通过执行类似
#!/bin/bash
tmp_pass=0
if [ $tmp_pass = 0 ]; then
tmp_pass=`head -c 10 /dev/random | base64`
echo "${tmp_pass:0:10}" #cut to 10 characters after base64 conversion
fi
答案 1 :(得分:0)
在密码中添加您想要的任何特殊字符,并远离/ dev / random,它将耗尽数据并且看起来像是悬挂。
tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c10