리눅스 쉘 스크립트 작성이 너무 어려워요! 도와주세요!
작성자 정보
- 박준영 작성
- 작성일
컨텐츠 정보
- 3,727 조회
- 2 댓글
- 0 추천
- 목록
본문
다름이 아니라 대학교에서 리눅스 수강중인데,
쉘 스크립트 를 작성하는 문제가 나왔습니다.
총 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
-------------------------------------------------------------------------------------------------------------
이와 같은데, 제가 교수님이 나눠준 강의 자료를 봤지만 전혀 내용이 이해가 가질 않습니다!!(즉, 실행명령어를 어디에 써야될지 하나도 모르겠음...)
가장 큰 문제는 인자를 받았을 때와 안받았을 때, 실행해야되는게 다른데, 인자를 어떻게 줘야 될지 조차 난감한 상황입니다...
모자란 리눅스 초짜좀 도와주세요~
관련자료
-
이전
-
다음
초보님의 댓글
- 초보
- 작성일
#/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 는 해 보니까
명령어를 그대로 나타내주네요.
초보님의 댓글
- 초보
- 작성일