【发布时间】:2017-06-12 13:47:05
【问题描述】:
我已经寻找了很多答案,但到目前为止我没有找到任何有效的建议。
在命令行上,这是可行的:
$ myvar=$( cat -n /usr/share/dict/cracklib-small | grep $myrand | sed -e "s/$myrand//" )
$ echo $myvar
$ commonness
但是,在 bash 脚本中,完全相同的行只是回显了一个空行
notes - $myrand 是一个数字,例如用 $RANDOM 生成的 10340
cat 打印出带有行号的字典
grep 抓住其中包含 $myrand 的行;例如10340 共性
sed 旨在删除该行的 $myrand 部分并将其替换为空。这是我的示例脚本
#!/bin/bash
# prints out a random word
myrand=$RANDOM
export myrand
myword=$( cat -n /path/to/dict/cracklib-small | grep myrand | sed -e "s/$myrand//g" <<<"$myword" )
echo $myword
【问题讨论】:
-
在使用 myrand 之前打印并检查可能不存在该数字的行
-
顺便说一句,这是获得随机线的一种非常糟糕的方法。
grep 1将匹配 1、10、11、113 等;grep 101将找到 2101、3101、1013 等。或者您可能会得到文件中不存在且根本没有匹配项的数字。 -
是的,你是对的。只是练习。我会找到另一种获取随机线的方法 - grep -w 似乎有效