![awk 将命令结果赋给变量](https://linux22.com/image/171931/awk%20%E5%B0%86%E5%91%BD%E4%BB%A4%E7%BB%93%E6%9E%9C%E8%B5%8B%E7%BB%99%E5%8F%98%E9%87%8F.png)
我正在编写 awk 脚本,并尝试获取分配给变量的命令的结果。我确信这是可能的(命令替换?),但没有成功。
BEGIN {
records_count = read_file_into_array("/usr/share/dict/web2", File)
srand()
printf "A random word: %s\n\n",File[int(rand()*records_count)]
first=($(awk (File[int(rand()*records_count)]) ))
print "New password: ",first
exit
}
该脚本正确地打印了“随机单词”,但我没有得到“新密码”的任何信息希望这里有人可以阐明一些情况?非常感谢。
答案1
四件事:
第一的:每次拨打时rand()
,您都会得到不同的号码。因此,在 中提取的单词printf
将与在 中提取的单词不同。first=
第二:即使第一点不是这样,如果可以避免的话,调用避免多次调用函数通常是一个好主意。
第三:线路
first=($(awk (File[int(rand()*records_count)]) ))
看起来像是 shell 脚本中的一行,而不是awk
脚本。失去($(awk (
和) ))
,那么它看起来像awk
。
第四:有一个awk
退出命令,但在本例中不需要它。
应用所有这些给出:
BEGIN {
records_count = read_file_into_array("/usr/share/dict/web2", File)
srand()
first=File[int(rand()*records_count)]
printf "A random word: %s\n\n",first
print "New password: ",first
}
请注意,这将打印前两次的值,可能没有必要。