CLOUD/IaC

[Shell Programming] 시작하기

alsruds 2023. 3. 27. 17:32

》 Linux 명령어로 프로그래밍 코드 짜기

반복적인 작업 자동화 가능

 

 

● 실행

# 실행
sh [file name]	# sh ex01.sh

# 권한 주기
chmod 755 [file name]

 

 변수

변수명=값  (띄어쓰기 금지)

변수명=`명령어`

변수 사용 시 변수명 앞에 $ 붙여줌

test=hello
echo $test
# 출력 : hello
  • 환경 변수 : 시스템 환경과 관련된 정보 저장
    • 변수명이 모두 대문자
    • PATH : 쉘이 명령어의 실행 파일을 찾을 때 참조하는 디렉토리 경로
    • PS1 : 쉘 프롬프트 모양
  • 사용자 정의 변수 : 사용자가 프로그래밍할 때 사용
    • 변수명에 문자, 숫자, _ 사용 가능
    • 변수명의 첫 문자는 문자 또는 _
  • 특수 변수 : 특수한 의미
    • 현재 쉘의 PID, 실행된 마지막 백그라운드 명령 프로세스 넘버
  • 위치 매개 변수 : $0, $1~$9
    • (ex) sh  ex01.sh  -test  abcd
    • $0 : ex01.sh
    • $1 : -test
    • $2 : abcd

 

 조건문

》 기본 조건문

if [ 조건 ]	# 띄어쓰기 맞춰주기
then
	명령어	# 들여쓰기는 안맞춰줘도 됨
fi

 

》 나머지 조건문

if [ 조건 ]
then
	명령어1
else
	명령어2
fi

 

》 추가 조건문

if [ 조건1 ]
then
	명령어1
elif [ 조건2 ]
then
	명령어2
else
	명령어3
fi

 

》 조건

문자열 검사
str1 = str2 문자열이 같으면 True, 다르면 False
str1 != str2 문자열이 다르면 True, 같으면 False
str 문자열이 비어있지 않으면 True, 비어있으면 False

 

산술 비교
A -eq B (==) A와 B가 같으면 True
A -ne B (!=) A와 B가 다르면 True
A -gt B (>) A가 B보다 크면 True
A -ge B (>=) A가 B보다 크거나 같으면 True
A -lt B (<) A가 B보다 작으면 True
A -le B (<=) A가 B보다 작거나 같으면 True

 

파일 검사
-d file directory일 때 True
-f file 일반 파일이면 True
-l file 링크 파일이면 True
-r file 읽기 가능하면 True
-w file 쓰기 가능하면 True
-x file 실행 가능하면 True
-u file SetUID 설정 파일이면 True
-g file SetGID 설정 파일이면 True
-k file Sticky Bit 설정 파일이면 True

 

논리 조건 연산
! NOT 연산
-a AND 연산
-o OR 연산

 

 

● 반복문

》 For 문

#!/bin/bash
for 변수 in 범위
do
	명령어
done

 

 

While 문

#!/bin/bash
while [ 조건 ]
do
	명령어
done

 

활용

  • cut
    • -d : 구분자 지정
    • -f : 몇 번째 필드인지 지정
  • awk
    • -F : cut -d랑 비슷하지만 " "를 기준으로 구분지었을 때 d는 띄어쓰기 하나를 구분자로 지정한다면 F는 공백 자체를 구분자로 지정
  • wc
    • -c : 문자 수
    • -l : 라인 수
  • sed
    • -i : 변경한 내용 저장 (없으면 단순 출력)
    • sed 's/[패턴1]/[패턴2]/g' [파일] : 패턴1을 패턴2로 변경
    • sed '/[패턴]/d' [파일] : 패턴이 포함된 라인 삭제
    • sed '/^$/d' [파일] : 공백 라인 삭제

 

》 root 계정의 파일시스템 메모리 사용량 현황