08. 기본적인 쉘 프로그래밍2

정혜지·2022년 7월 21일
0

CS /Linux

목록 보기
12/13

TUX



쉘 스크립트 기본 문법 pt.2


  • break : 수행중이던 반복문을 빠져나갈때 사용
  • continue : 반복문의 조건식으로 되돌아감
  • exit : 은 프로그램을 완전히 종료
  • return : 함수에서 주로 사용, 함수를 호출한 곳으로 반환값을 돌려줄 때 사용

함수

함수는 특정 목적을 수행하는 프로그램 모듈을 의미

함수정의

함수이름() {
수행하고자 하는 명령
return -> 생략가능
}

함수호출

:
함수이름
:

함수 생성 및 활용

#! /bin/sh

echo "함수 생성 및 활용"

add()
{
total=`expr $1 + $2`
echo "연산 결과 : $num1 + $num2 = $total"
}

echo "두 수를 입력해주세요"
echo "첫번째 수 입력"
 read num1
echo "두번째 수 입력"
 read num2
 add $num1 $num2

exit 0





쉘 명령어

eval : 문자열을 명령문으로 인식


echo "문자열을 명령문으로 인식 eval"

echo "문자열로 인식"
filename="ls /tmp"			문자열그대로 ls /tmp 출력
echo $filename

echo "명령문으로 인식 eval"
eval $filename			명령어 ls /tmp와 같은 결과 


exit 0

printf : 문자열 출력

#! /bin/sh

echo "키보드로 실수를 입력 및 출력"

echo "실수를 입력하세요"
 read float_num

echo "문자열로 값을 입력하세요"
 read input_str

echo "실수의 출력형태 지정"
printf "%5.2f \n "$float_num
echo "-----------------------"

echo "문자열 출력형식 지정"
printf "%s \n " "$input_str"
printf "%s \n " $input_str


exit 0

set과 $로 명령어 형식 지정
명령어를 매개변수로 받아 사용

#! /bin/sh

echo "set과 $로 명령어 형식 지정"

echo "오늘의 날짜 출력 : $(date)"
set $(date)
echo "오늘의 요일 출력 : $4 요일"


exit 0
결과 : 
set과 $로 명령어 형식 지정
오늘의 날짜 출력 : 2022. 07. 21. (목) 10:09:33 KST
오늘의 요일 출력 : (목) 요일

실습

오늘의 년도 출력 : 2022년도
월일 출력 : 7월 21일


echo "오늘의 년도 출력 : $1 년도"
echo "월일 출력 : $2월 $3일"

결과
오늘의 년도 출력 : 2022. 년도
월일 출력 : 07.월 21.일



📌 파일 리다이렉션, 표준 오류

표준 스트림(standard stream)

  • 표준 입력(stdin) : 0
  • 표준 출력(stdout): 1
  • 표준 에러(stderr): 2

입출력 전환(I/O Redirection)
리다이렉션이란 말그대로 방향을 변경하는 것이다.
표준 출력 파일(stdout)과 표준 입력 파일(stdin) 변경을 허용하는 것

ex)

# who
centos             2022-07-21 09:32 (:0)
root          2022-07-21 09:32 (192.168.56.1)
# who > output.txt
# ls
 eval.sh           hello.txt             output.txt     printf_test.sh
developer        function_test.sh    print_date.sh
cat output.txt
centos       2022-07-21 09:32 (:0)
root         2022-07-21 09:32 (192.168.56.1)


# who >> output.txt		:  >> -> 덮어쓰기X 이어쓰기
# cat output.txt
centos   :0           2022-07-21 09:32 (:0)
root     pts/0        2022-07-21 09:32 (192.168.56.1)
centos   :0           2022-07-21 09:32 (:0)
root     pts/0        2022-07-21 09:32 (192.168.56.1)
#


표준 에러
ex)

# ls -l /bin/usr
ls: cannot access /bin/usr: 그런 파일이나 디렉터리가 없습니다
# ls -l /bin/usr > err.txt
ls: cannot access /bin/usr: 그런 파일이나 디렉터리가 없습니다
# cat err.txt
# ls -l /bin/usr 2> err.txt
# cat err.txt
ls: cannot access /bin/usr: 그런 파일이나 디렉터리가 없습니다

명령문자

종류의미
&명령을 백그라운드에서 실행
$변수에 접근 가능
;명령의 끝
#주석

: 와일드 카드로 표준 입출력을 지정하는 경우도 있다

profile
오히려 좋아

0개의 댓글