질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

리눅스 쉘 스크립트 작성이 너무 어려워요! 도와주세요!

작성자 정보

  • 박준영 작성
  • 작성일

컨텐츠 정보

본문

다름이 아니라 대학교에서 리눅스 수강중인데,

쉘 스크립트 를 작성하는 문제가 나왔습니다.

총 3문제인데.... 3문제 다 손을 못대겠습니다!! -ㅁ-;

-----------------------------------------------------------------------------------------------------------

1) 1부터 n까지의 합을 계산하는 script file "findsum"을 만들어 실행권한을 준 후 저장하라.
그 script file은 다음의 조건을 만족하여야 한다.
$ ./findsum 인자를 주지 않으면 “Usage : findsum n"이라는 결과를 출력하고 끝나야 하며,
그러나 shell 자체는 종료되지 않아야 한다.(즉 exit을 사용말 것)
$ ./findsum 10 처럼 숫자로 인자를 주면 10까지의 합을 출력해야 한다.
(예) $ ./findsum
Usage : findsum n
$ ./findsum 10
Sum from 1 to 10 is 55

2) 다음 조건을 만족하는 shell script “keykind"를 작성하여 실행권한을 준 후 저장하라.
- 실행하면 “Press any key and hit ENTER. To stop, enter @ : "라고 출력하고 입력을 기다리며
- 소문자와 ENTER를 치면 “lowercase", 대문자와 ENTER를 치면 "uppercase", 숫자와 ENTER를 치면 ”digit",
- 그 외“@”를 제외한 아무 키나 치고 ENTER를 누르면 “other"라고 출력하며
- 다시 “Press any key and hit ENTER. To stop, enter @ : "라는 글을 출력하고 영원히 loop을 돌되
“@”키와 ENTER를 쳐야만 looping이 끝나는 script file을 만들라.
주의 : 인터넷상에서 비슷한 shell script를 찾을 수 있으나 제대로 작동하지 않음.

3) 강의 노트 4장 35번째 slide의 multi.bash를 응용하여 다음의 요구조건에 맞는 script file “multi”를 작성하여 실행가능하도록 변경한 후 저장하라.
* $ ./multi 인자를 주지 않으면 아래 첫 번째 (예)와 같이 반응하고 끝나도록 해야 함
* $ ./multi 10 인자로 10이상의 값을 주면 아래 두 번째 (예)와 같이 반응하고 끝나도록 해야 함.
위와 같이 인자가 없거나 잘못 주어지면, 교재의 예제는 logout이 되어 버리나 logout되지 않고 새 prompt가 나오도록 만들어야 함.
* $ ./multi 7 인자를 7을 주면 구구단 7단까지 인쇄함(단, 교재처럼 출력이 들쑥 날쑥 하지 않고
일정한 간격으로 정렬되어야 함)
* 정상적 출력은 다음과 같아야 하며, 1줄(공백)부터 5번째 줄까지(즉 ==================)는 필히 here document(강의노트 3장 참조)를 사용해서 출력되도록 해야 함
(예) $ ./multi
Usage: multi number
$ ./multi 100
Enter a number smaller than 10
$ ./multi 7
multiplication table x * y
y= 1 2 3 4 5 6 7 8 9
=======================================
x=1 1 2 3 4 5 6 7 8 9
x=2 2 4 6 8 10 12 14 16 18
x=3 3 6 9 12 15 18 21 24 27
x=4 4 8 12 16 20 24 28 32 36
x=5 5 10 15 20 25 30 35 40 45
x=6 6 12 18 24 30 36 42 48 54
x=7 7 14 21 28 35 42 49 56 63

-------------------------------------------------------------------------------------------------------------

이와 같은데, 제가 교수님이 나눠준 강의 자료를 봤지만 전혀 내용이 이해가 가질 않습니다!!(즉, 실행명령어를 어디에 써야될지 하나도 모르겠음...)

가장 큰 문제는 인자를 받았을 때와 안받았을 때, 실행해야되는게 다른데, 인자를 어떻게 줘야 될지 조차 난감한 상황입니다...

모자란 리눅스 초짜좀 도와주세요~

관련자료

댓글 2

초보님의 댓글

  • 초보
  • 작성일
1. N까지 합산하기

#/bin/bash

sum=0

while(:)
do
        echo -n  "input the number to add  :  "
        read number
        for((i=1 ; i <= number ; i++))
        do
                sum=`expr $sum + $i`
        done

        echo "sum value is $sum "
        echo " "
        echo -n "continue ? [yes/no] : "
        read  continue

        if [ "$continue"  != "yes" ]
        then
                exit
        fi
done



2. 소문자, 대문자 , 특수문자 구분하기

(참고)sed 명령은 문자를 치환할 때 쓰는 명령어임

#!/bin/bash


while (:)
do

        echo " ===================================================== "
        echo -n " Press any key and hit ENTER. To stop, enter @ : "
        read char

        if [ "$char" = "@" ]
        then
                exit
        else

                if [ -z $"`echo $char | sed -e 's/[0-9]//g'`" ]
                then
                        echo "$char is digit"
                elif [ -z $"`echo $char | sed  -e 's/[A-Z]//g'`" ]
                then
                        echo "$char is UPPER character"

                elif [ "$char" = "@" ]
                then
                        echo "$char is  at "

                elif [ -z $"`echo $char | sed -e 's/[a-z]//g'`" ]
                then
                        echo "$char is lower character"
                else
                        echo "$char is Special character"
                fi
        fi
done


3.  번은  1번, 2번 이해하면 충분히 하실 수 있을 것이라고 생각됩니다요.
인자 받는 건 간단하거든요.  $1, $2  이렇게 썼던가?  $0  는 해 보니까
명령어를 그대로 나타내주네요.

초보님의 댓글

  • 초보
  • 작성일
vi 에서 복사해서 바로 붙이니까 들여쓰기가 전혀 안되었네요. 보기가 안 좋지요? ^^

공지사항


뉴스광장


  • 현재 회원수 :  60,298 명
  • 현재 강좌수 :  36,962 개
  • 현재 접속자 :  370 명