我已经看了很多答案,但我找不到任何有效的建议。
在命令行上,这有效:
$ myvar=$( cat -n /usr/share/dict/cracklib-small | grep $myrand | sed -e "s/$myrand//" )
$ echo $myvar
$ commonness
然而,在bash脚本中,相同的行只是回显了一个空行
注意 - $ myrand是一个数字,就像用$ RANDOM生成的10340一样
猫用行号打印出一本字典
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
答案 0 :(得分:2)
您的命令行代码正在运行:
grep $myrand
您的脚本正在运行:
grep myrand
这些不是一回事;后者正在寻找包含&#34; myrand&#34;在其中,而不是随机数。
顺便说一下 - 我建议采用不同的方式获得随机线。如果您有GNU coreutils,shuf
工具是专用的:
myword=$(shuf -n 1 /path/to/dict/cracklib-small)
答案 1 :(得分:0)
#!/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
grep myrand
中的$符号在哪里?
在发布之前必须先做一些工作。