저는 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
}
이는 처음 두 번의 값을 인쇄하므로 필요하지 않을 수도 있습니다.