awk 将命令结果赋给变量

awk 将命令结果赋给变量

我正在编写 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
}

请注意,这将打印前两次的值,可能没有必要。

相关内容