2012-10-14 1 views
1

사용자가 입력 한 내용을이 텍스트 파일과 비교하여 입력 한 내용이 텍스트 파일에 있는지 여부를 확인한 다음이를 말하고 싶습니다.

파일 1 : color_readme.txt 이 파일은 다음과 같습니다

red 
red 
orange 
blue 

코드 :

echo Please enter a color: 
cat color_readme.txt (printing the colors to screen) 
read userinput (read what the user enters) 
variable1 = grep $userinput (a random variable = what is found in the file according to what the user typed) 
if userinput = variable1 (SAY THIS) 
else (SAY THIS) 

초보자를 위해이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 선생님은 ifelse 및 else 조건 인 if를 사용하기를 원합니다.

편집
+0

이해하기 힘든 쓰지 않고 의사 언어 (또는 영어)로하고 싶은 것을 설명해주십시오. 암호. 감사. –

+2

스크린 샷이 아닌 실제 코드가 필요한 이유는 무엇입니까? – dreamlax

+0

이것은 코드가 아니며 bash 코드와 가상 코드가 혼합 된 것입니다. –

답변

4
echo "Pick one of the colours below:" 
cat colour_readme.txt 
read i 
if x=$(grep "$i" colour_readme.txt) 
then echo "You picked $i and it appears in colour_readme.txt as $x" 
else echo "You picked $i but it does not appear in colour_readme.txt" 
fi 

당신은 사용하지 않고 명령의 상태를 테스트 할 수 test (또는 [ 또는 [[) 연산자; 그것들은 단지 if으로 테스트 할 수있는 종료 상태를 반환하는 특수 명령 일뿐입니다.

+0

Jonathan 대단히 감사합니다! 내가 궁금해하는 것은 "$ i"가 ​​따옴표 안에 있어야하는 이유입니다. – Ben

+0

이 경우, 나는 '$ i'를 따옴표로 묶을 필요가 없다. 그러나'grep'에서'() *? {} '와 같은 특수 문자를 사용할 필요가 없다면 좋은 습관이 될 것입니다. (색상이 옅은 빨간색 인 경우 따옴표가 필요합니다.)이 때문에 많은 쉘 스크립터는 변수가 필요할지를 결정하려고하지 않고 자동으로 변수를 둘러 쌉니다. 사례별로 –

+0

@JeremyJStarcher :'read i' 프롬프트에 응답하여 사용자가 '하늘색 분홍색'을 입력하면 어떻게 될까요? –

2
answer="Wrong" 
realcolour=`cat ./color_readme.txt` 

Until [ $answer = "Correct" ] ; Do 
echo -n "Please enter a colour:" 
read usercolour 

If [ $usercolour = $realcolour ] ; Then 
    answer="Correct" 
Else 
    answer="Wrong" 
Fi 

echo $answer 
Done 

: 영업 이익은 텍스트 파일에 여러 색상을 명확히하기 전에 ... 위의 기록 된 ...

+0

'cat' 대신에'less'를 사용하거나'realcolour = $ (<./ color_readme.txt)'만 사용하는 것은 의미가 없습니다. 'less'는 대화 형으로 사용하도록 설계되었습니다. 쉘 변수에서 입력을 트래핑하는이 예제에서와 같이, 출력이 터미널로 보내지 않는 곳에서 사용되면'cat'으로 줄어 듭니다. –

+0

철자법 오류, 대문자 사용 등의 임의적 인 행위 등을 제외하고 위의 내용은 귀하가 묻고있는 기본 버전입니다. 더 자세한 내용을 ... –

+0

죄송합니다, 나쁜 습관 .... 덜 고양이로 바뀝니다 –

2
echo "name a color" 
read i 
grep -q $i color.txt 
if [ $? == 0 ] 
then 
echo "$i is in the file" 
else 
echo "$i is not in the file" 
fi 

"[== 0 $?]가"이 경우 그렙이었다 이전 명령의 종료 상태를 테스트합니다. grep이 무언가를 찾으면 끝내기 상태는 0이고 끝나지 않으면 끝내기 상태는 1입니다.

+0

나는이 정보도 확실히 사용할 것입니다. 무리 감사! – Ben