22.06.08 (수)
리눅스 쉘 프로그램
[fedora20_8_shell. ppt]
▶Bourne Again shell (bash) 특징
1) 명령어 Historya 기능
2) 산술 연산 기능
3) 작업 제어 기능 (제어: 조건문사용가능)
4) Prompt 제어 기능
5) tab키를 이용 파일 이름 완성 기능
6) 확장된 내부 명령어
▶p6. 기타 특수문자
~ 홈디렉토리
[ ] 문자집합
{ } 명령집합
! 명령문 history
* null문자를 포함한 모든 문자열 치환
? 단일 문자의 치환
\ 다음에 나오는 문자의 특별한 의미 제거
' ' 특수 문자의 의미 제거
# 주석처리
; shell 명령 분리자 (문장의 끝을 나타냄)
$ 변수의 접근
▶프로그램에서 변수를 나타내는 방법
1.형을 선언하고 변수 사용하기
ㄴ int k, string k 등등 c언어나 java에서 사용
2.값이 들어오면 변수의 형이 정의되는 방법
ㄴ k=10 , k='우리' 라고 해주면 자동으로 숫자형, 문자형으로 정의가 된다
자바스크립트, 리눅스의 쉘에서 사용
99 , 01050376133
99는 숫자로 생각하고 , 01050376133 는 문자로 생각할 수 있다 맨 앞에 0이 들어가서
ㄴ 주민번호나 핸드폰 번호 등등 은 문자로 생각한다 / 연산을 하지 않으니까
연산하는 것을 숫자로 본다
▶Shell 스크립트 파일 만들기
1. 변수는 대소문자를 구분한다.
2. 변수에서 문자 숫자 구분은 없다.
3. 숫자 A=10, 문자 A=“10”
4. 지정된 변수를 사용 할 때는 $ 기호를 사용
예) os = linux
echo $os
5. read 문 – 사용자의 표준입력을 받아 들여
변수로 사용할 때 사용.
read문 예제
#> vi test.sh
#! /bin/bash (여기서 #은 선언문)
echo –n “input name:” (echo-출력문)
read name (read-입력받은값을 출력)
echo $name
-------------------------------
#> sh test.sh


▶쉘 스크립트의 장점
C 프로그램과 유사한 형태의 프로그래밍이 가능하다.
▶쉘 스크립트 파일
‘ #! /bin/bash ‘ 로 시작한다.
[실행방법]
#>sh [스크립트 파일명]
[퍼미션 변경 후 실행 : chmod +x 파일명] --x 는 실행권한
./[스크립트 파일명]
[korea@localhost ~]$ vi test.sh
[korea@localhost ~]$ ls -l
-rw-rw-r-- 1 korea korea 60 6월 8 10:07 test.sh
[korea@localhost ~]$ chmod +x test.sh
[korea@localhost ~]$ ls -l
-rwxrwxr-x 1 korea korea 60 6월 8 10:07 test.sh --x가 다 추가됨
[korea@localhost ~]$ ./test.sh --앞에 sh 안써도 실행 가능해짐
input name:
▶number.sh
#! /bin/bash
if [ 4 -gt 9 ] [ 4 -gt 9 ] --gt는 크다는 의미
then 4 > 9
echo “ A “
else
echo " B "
fi

▶String.sh (문자열비교)
#! /bin/bash
if [ aaa = "aaa" ]
then
echo " = "
else
echo "!= "
fi

▶숫자계산
쉘 스크립트에서 숫자의 계산은 expr 을 사용 합니다.
expr : 숫자 계산
+ : 더하기, - : 빼기 , / 나누기 , % 나머지
* : 곱하기 (‘\*’ 로 사용한다.)
[주의사항]
expr 로 지정하는 경우 역따옴표 ` ` 를 사용. (키보드1 앞에있음)
연산자 * 와 괄호 앞에는 역슬래시(\) 를 같이 사용
연산자와 숫자, 변수, 기호 사이에는 Space 가 존재해야 한다
vi expr1.sh
#! /bin/bash
num=`expr 2 + 10 - 4` --띄어쓰기 그대로 해줘야함
echo $num

vi expr2.sh
#! /bin/bash
num=`expr \( 2 + 10 \) \* 4` --연산자 * 와 괄호 앞에는 역슬래시(\) 를 같이 사용
echo $num

1- 10까지 출력
#! /bin/bash
echo -n "aaa:“
read A
B=11
while [ $A -lt $B ] -- -lt 는 < 의미 (작다)
do
echo $A
A=` expr $A + 1 `
done
echo " end "

누적합 계산
#! /bin/bash
echo -n "aaa:"
read A
B=11
C=0 --앞에서 변수 선언 안해줘도 초기값으로 들어감
while [ $A -lt $B ]
do
echo $A
C=` expr $C + $A`
A=` expr $A + 1`
done
echo "end"
echo "============"
echo "누적합:$C"
#! /bin/bash
echo -n "aaa:"
read A
B=11 --변수선언 안해준 것
while [ $A -lt $B ]
do
echo $A
C=` expr $C + $A`
A=` expr $A + 1`
done
echo "end"
echo "============"
echo "누적합:"$C

홀수만 누적합 구하기
#! /bin/bash
echo -n "aaa:"
read A
B=11
while [ $A -lt $B ]
do
if [ `expr $A % 2` -eq 1 ] -- -eq는 같다는 의미 , 2로나눈 나머지가 산술연산이기 때문에 expr을 써준다
then
echo $A
C=`expr $C + $A`
fi
A=`expr $A + 1`
done
echo "end"
echo "============"
echo "누적합:"$C


문자열 비교 연산자

숫자 비교 연산자
▶vi read1.sh
#! /bin/bash
echo " end ^^ "
echo " end ^^ "
echo " end ^^ "
echo " end ^^ "
end ^^
end ^^
end ^^
end ^^
ㄴ echo는 자동 줄바꿈이 됨
▶ vi read2.sh
#! /bin/bash
echo -n "1"
echo -n "2"
echo -n "3"
echo "4"
1234
ㄴ -n 옵션 쓰면 붙어서 써짐
▶vi read3.sh
#! /bin/bash
echo -n "Name : “
read name
echo " MY NAME IS $name ^^" -- $name 은 변수값으로 받아오는 것

▶조건문
쉘 프로그램에서의 조건문은 if , for , until
등이 있다.
1) if 구문
2) if ~ else 문
3) if ~ elif 문
vi if1.sh
#! /bin/bash
if [ 9 -gt 4 ]
then
echo "9"
fi
++
#! /bin/bash
if [ 9 -gt 4 ];then
echo "9"
fi
ㄴ 쉘프로그램은 라인 단위로 해석되므로 각각 다른 라인에 작성하여야 한다. 하지만 ; 을 이용하여 라인의 끝을 인식시킬 수도 있다. 많이 쓰진 않음
if2.sh
#! /bin/bash
read AA
if [ $AA -gt 0 ] -- 0보다 크면
then
echo "++++"
else
echo "----"
fi

▶관계연산자
-a : and -o : or
모두 참일때 참 한개이상참이면 참
#! /bin/bash
echo -n "input number 7, 8: "
read _num
if [ \( $_num -lt 7 \) -o \( $_num -gt 8 \) ]
then
echo "7, 8<--- input number(bad) “
fi
if [ $_num -eq 7 ]
then
echo "input number : 7 “
fi
if [ $_num -eq 8 ]
then
echo "input number : 8 “
fi

▶for 구문
for 문은 조건 , 반복문 입니다.
for문은 괄호 두개를 쓴다
vi for1.sh
#! /bin/bash
for i in 1 2 3 4 5
do
echo $i
done
-----------------
vi for2.sh
#! /bin/bash
for (( i=1; i <=10; i++))
do
echo $i
done

1,2,3,4,5,6,7,8,9,10 으로 출력해보기
#! /bin/bash
for (( i=1; i<=10; i++ ))
do
if [ $i -eq 10 ]
then
echo "$i"
else
echo -n "$i,"
fi
done

▶seq 명령어
#> seq 5 -- 1에서 5까지 출력
1
2
3
4
5
#> seq 5 15 -- 5에서 15까지 출력
5
6
7
8
9
10
11
12
13
14
15
#> seq 1 5 20
-- 1에서 20사이의 수중 5씩 증가하면서 출력
1
6
11
16
▶중첩 for 문
#! /bin/bash
for i in `seq 1 3` --` ` 묶인 문자열은 명령어로 인식됨.
do
for j in `seq 4 6`
do
A=`expr $i + $j`
echo $A
done
done
위를 활용하여 구구단 3단 출력하기
#! /bin/bash
for i in `seq 1 9`
do
A=`expr $i \* 3`
echo " 3 x $i = $A"
done

'리눅스' 카테고리의 다른 글
[ 16일차 ] 리눅스 총 정리 + 정보처리기사문제 정답 (0) | 2022.06.10 |
---|---|
[ 15일차 ] 구구단 3단 출력하기, 전체구구단 출력하기, [fedora20_8_shell. ppt] p44. ~ , 쉘 프로그램 응용 (0) | 2022.06.10 |
[ 14일차 ] 리눅스 연습문제 + [fedora20_4 ppt] 이론, [fedora20_5_apm ppt] 이론 (0) | 2022.06.10 |
[ 14일차 ] 데몬리스타트, 이름변경하기 명령어 (0) | 2022.06.10 |
[ 13일차 ] html (0) | 2022.06.10 |