셸 스 크 립 트 를 사용 하여 무 작위 단 어 를 생 성 합 니 다.

3038 단어 shell
최근 에는 테스트 에 사용 할 무 작위 단어 나 문자열 이 필요 합 니 다.무 작위 문자열 을 만 드 는 방법 은 여러 가지 가 있 습 니 다. 무 작위 단 어 를 어떻게 만 듭 니까?리 눅 스 시스템 에 사전 파일 을 가 져 왔 습 니 다. 그 중에서 대량의 단 어 를 저장 하고 이 사전 파일 과 임 의 수 를 통 해 임 의 단 어 를 만 들 수 있 습 니 다.Linux 의 이 사전 파일 은/usr/share/dict/디 렉 터 리 에 있 으 며, 이 단어 들 은 각각 한 줄 씩 차지 합 니 다.이제 목 표 는 명확 하 다. 임 의 무 작위 수 를 만 들 고 이 단 어 를 읽 으 면 된다.sed 는 파일 의 지정 한 줄 을 읽 을 수 있 습 니 다. 예 를 들 어 sed - n 10p filename 은 filename 이라는 파일 의 10 번 째 줄 을 읽 을 수 있 습 니 다.랜 덤 수 는 RANDON 이라는 변 수 를 사용 하여 얻 을 수 있 습 니 다.그러나 RANDON 이 얻 은 난수 범 위 는 [0, 32767] 이 고 우리 사전 파일 에는 모두 479623 개의 단어 가 있다.사전 파일 을 열 면 단어 가 사전 순서에 따라 배열 되 어 있 고 단어 가 촘촘 하 게 배열 되 어 있어 '싱크로 율' 이 높 은 단어 가 많이 존재 하 며 실제 적 으로 랜 덤 성 만큼 좋 은 랜 덤 수 를 요구 하지 않 는 다.따라서 무 작위 수 를 하나의 상수 에 곱 한 후 단어의 총 수 를 남 깁 니 다. 여기 서 상수 가 하나의 질 수 를 선택 합 니 다. (왜 질 수 죠? 질 수 는 신기 한 부분 이 많 습 니 다. 스 크 립 트 에 37 을 사용 합 니 다. 주로 RANDOM 에 상 수 를 곱 한 후 0 - 479623 전 체 를 덮 을 수 있 습 니 다.)(물론 C/C++ 생 성 된 난수 범 위 는 셸 의 RANDOM 보다 훨씬 넓 지만 C/C++ 방식 으로 실현 하 는 것 은 셸 보다 귀 찮 기 때 문 입 니 다)
#!/bin/bash 
#randomWords.sh 
#        
filepath=/usr/share/dict/words
#       
resultFile=./result.txt
#             
totalWordsNum=`wc -l $filepath | awk '{print $1}'`

idx=1
#NUM            
NUM=100
declare -i num
declare -i randNum
ratio=37

while [ "$idx" -le "$NUM" ]
do
    a=$RANDOM
    num=$(( $a*$ratio ))
    randNum=`expr $num%$totalWordsNum` 

    echo $randNum
    sed -n "$randNum"p $filepath >> $resultFile
    idx=`expr $idx + 1`
done

또한 텍스트 편집기 가 기본적으로 windows 스타일 로 줄 을 바 꾸 면 디 버 깅 할 때 문법 오류 가 발생 합 니 다. 'syntax error near unexpected token' 은 windows 환경 에서 줄 을 바 꾸 는 기본 값 은\r 이 고 Linux 환경 은 변환 이 필요 하 며 Linux 환경 에서 dos2unix 로 변환 할 수 있 기 때 문 입 니 다. Windows 환경 에서 Notepad + 를 통 해 변환 할 수 있 는 방법 은?메뉴 항목 편집 -> 문서 형식 변환 -> 유 닉 스 형식 으로 변환 합 니 다. sublime 을 사용 하면 기본 으로 설 정 된 유 닉 스 형식 을 찾 을 수 없습니다.

좋은 웹페이지 즐겨찾기