Data Base/Linux

231205 Linux shell ⓑ

잇꼬 2023. 12. 5. 17:14
728x90
반응형
SMALL

 셸 스크립트
# 셸,쉘(shell) 이란 ?
shell 이란 운영체제에서 제공하는 명령을 실행하는 프로그램이다
os 컨트럴을 하기 위함

# 셀 스크립트란?
인터프리터 역할을 하는 것으로 시스템에서 지원하는 명령어들의 집합을 묶어서 프로그램화 한 것을 의미한다.
인터프리터 언어 : 한줄씩 수행하는 언어

# 셸의 종류
- Bourne shell
- C shell
- Korn shell
- bash shell(보편적으로 사용)

# 셸 스크립트 프로그래밍?
- c 언어와 유사하게 프로그래밍을 가능하게 한다.
- 변수, 반복문, 조건제어문 필요 및 사용 가능
- 별도로 컴파일 하지 않고 텍스트 파일 형태로 바로 실행가능
- vi 작성한다.
- 리눅스의 많은 부분이 셸스크립트로 작성되어 있다.

 

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

vi user_host.sh


echo "호스트 이름 : "$HOSTNAME

sh user_host.sh
---------------------------------------------------------


[user1@centos ~]$ vi user_host.sh
[user1@centos ~]$ sh user_host.sh
호스트 이름: centos
[user1@centos ~]$ . user_host.sh
호스트 이름: centos
[user1@centos ~]$ . ./ user_host.sh
-bash: .: ./: is a directory
[user1@centos ~]$ . ./user_host.sh
호스트 이름: centos
[user1@centos ~]$ ./user_host.sh
-bash: ./user_host.sh: Permission denied
[user1@centos ~]$ chmod u+x user_host.sh
[user1@centos ~]$ ./user_host.sh
호스트 이름: centos



# hostname 출력
[user1@centos ~]$ hostname
centos
[user1@centos ~]$ echo $HOSTNAME
centos

■ 변수
- 모든 변수는 '문자열'로 취급
- 변수명 : 대소문자 구분
- 변수에 값을 대입할 때 = 좌우 공백이 없어야 한다.
- 변수에 값을 출력하려면 echo 명령어를 이용하면 된다.
(단, 변수를 사용할 때는 변수명 앞에 $ 있어야 한다.)

# 글로벌변수 선언
[user1@centos ~]$ v_str="오늘하루도 고생하셨습니다."
[user1@centos ~]$ echo $v_str
오늘하루도 고생하셨습니다.

# 문자열 취급으로 계산 어렵;
[user1@centos ~]$ v_num1=100
[user1@centos ~]$ v_num2=200
[user1@centos ~]$ echo $v_num1
100
[user1@centos ~]$ echo $v_num2
200
[user1@centos ~]$ echo $v_num1 + $v_num2
100 + 200



# expr : 값을 계산하는 명령어
[user1@centos ~]$ expr $v_num1 + $v_num2
300
[user1@centos ~]$ expr $v_num1 - $v_num2
-100
[user1@centos ~]$ expr $v_num1 * $v_num2
expr: syntax error
[user1@centos ~]$ expr $v_num1 / $v_num2
0
[user1@centos ~]$ expr $v_num1 / 2
50
[user1@centos ~]$ expr $v_num2 / 2
100
[user1@centos ~]$ expr $v_num1 * 2
expr: syntax error
[user1@centos ~]$ expr $v_num1^2
100^2
[user1@centos ~]$ expr $v_num1*2
100*2
[user1@centos ~]$ expr $v_num1 \* 2
200
[user1@centos ~]$ expr $v_num1 \ $v_num2
expr: syntax error
[user1@centos ~]$ expr $v_num1\*2
100*2


# 주의) 
#1. 괄호 앞과 뒤, * 앞에 꼭 \ 입력해야 한다.
#2. 괄호 안에 공백 문자 하나를 입력해야 한다.
[user1@centos ~]$ expr \( $v_num1 + 1000 \) \* $v_num2
220000

 

# 계산식 변수화
[user1@centos ~]$ num1=100
[user1@centos ~]$ num2=200
[user1@centos ~]$ num3='expr $num1 + $num2' # 문자열로 저장
[user1@centos ~]$ echo $num3
expr $num1 + $num2
[user1@centos ~]$ num4=`expr $num1 + $num2` # 계산 수행
[user1@centos ~]$ echo $num4
300

728x90
반응형
LIST