私は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
4つ:
最初:電話するたびにrand()
別の番号が届きます。したがって、から抽出された単語printf
はから抽出された単語とは異なります。first=
第二:最初のことが真でない場合でも、回避できる場合は、関数を何度も呼び出さないことをお勧めします。
第三:ライン
first=($(awk (File[int(rand()*records_count)]) ))
awk
スクリプトではなくシェルスクリプトの1行のように見えます。負けると次のよう($(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
}
これは最初の2つの値を印刷するので、必要ではないかもしれません。