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)]) ))

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
}

이는 처음 두 번의 값을 인쇄하므로 필요하지 않을 수도 있습니다.

관련 정보