Cohe

리눅스의 쉘 스크립트 본문

배포 배우기

리눅스의 쉘 스크립트

코헤0121 2024. 7. 29. 18:05
728x90

: bash, tsch, zsh ... 이런 쉘을 이용한 프로그래밍을 의미함.

  • 쉘 프로그래밍을 위한 변수와 특수 변수
  1. 일반 변수 -변수의 선언 및 초기화 변수명 = 값 ex) # hello = 안녕하세요
 -변수값 참조(변수 불러오기)
   $변수명 , ${변수명}

    • expr : 문자형 변수를 정수처럼 형변환하여 계산 가능하게 만들어 줌. 이 명령어를 사용하지 않으면 문자로 처리....

2)특수 변수 : 일반적인 변수와 다르게 이미 정해진 의미를 가지고 이용 되는 변수들이 있다.

1] $# : 명령입력 라인에서 입력된 인자의 갯수를 저장 2] $* : 명령입력 라인에서 입력된 인자 전체가 저장 3] $@ : 명령입력 라인에서 입력된 인자 전체 저장 4] $$ : 쉘 프로그램이 실행되면 사용된 프로세스 ID값을 저장하는 변수 5] $! : 쉘 프로그램이 실행되면서 실행시킨 백그라운드 프로세스 ID값을 저장하는 변수 6] $? : 최근 실행된 명령어의 리턴값을 저장하고 있음.

user1@myserver01:~$ mkdir shellscript
user1@myserver01:~$ pwd
/home/user1
user1@myserver01:~$ cd shellscript
user1@myserver01:~/shellscript$ vim test.sh
  • vim 편집기에 추가함
#!/bin/bash

# 일반 변수 사용 예시
char1="abc"
char2="defg"
var1=1
var2=2
var3=`expr $var1 + $var2`
echo $char1 $char2
echo $var1 + $var2
echo $var3

⇒ 실행권한이 없기 때문에 (x) bash로 실행한다

user1@myserver01:~/shellscript$ **bash test.sh**
abc defg
1 + 2
3
test.sh: line 12: /home/user1: Is a directory

3)환경 변수

시스템 구동하면서 사용하는 운영을 위한 변수 (bash의 주요 환경 변수)

HOME : 현재 사용자의 홈디렉터리 PATH : 실행파일을 찾는 디렉터리 경로 LANG : 기본 지원되는 언어 PWD : 사용자의 현재 작업 디렉터리 TERM : 로그인 터미널 타입 SHELL : 로그인해서 사용하는 쉘 USER : 현재 사용자의 이름 DISPLAY : X디스플레이 이름 COLUMNS : 현재 터미널의 컬럼 수 LINES : 현재 터미널의 라인 수 PS1 : 1차 명령 프롬프트 변수 PS2 : 2차 명령 프롬프트(대개는 ">") BASH : bash쉘의 경로 BASH_VERSION : bash버전 HISTFILE : 히스토리 파일의 경로 HISTSIZE : 히스토리 파일에 저장되는 개수 HOSTNAME : 호스트의 이름 USERNAME : 현재 사용자의 이름 LOGNAME : 로그인 이름 LS_COLORS : ls 명령어의 확장 색상 옵션 MAIL : 메일을 보관하는 경로 OSTYPE : 운영체제 타입

조건문 (if문과 case문)

  • 기본 if문 : 조건식의 참과 거짓을 판별 조건이 참이면 실행
  [형식]
  if [ 조건 ]
  then
     참일 경우 실행 내용
  fi
**주의] 조건 부분인 "[ 조건 ]" 각 내용 사이에는 공백 이 존재함. 
    • 조건문에 들어가는 비교 연산자 ** [문자열 비교] "A" == "B" : 두문자열이 같으면 참 "A" != "B" : 두문자열이 다르면 참 -n "A" : 문자열이 NULL이 아니면 참 -z "A" : 문자열이 NULL이면 참
      • *NULL : 빈문자

[산술 비교] 수식1 -eq 수식2 : 두 수식이 같으면 참 수식1 -ne 수식2 : 두 수식이 다르면 참 수식1 -gt 수식2 : 수식1이 크다면 참 수식1 -ge 수식2 : 수식1이 크거나 같으면 참 수식1 -lt 수식2 : 수식1이 작다면 참 수식1 -le 수식2 : 수식1이 작거나 같다면 참 !수식 : 수식이 거짓이면 참

  • *파일과 관련된 조건 ** -d 파일이름 : 파일이 디렉터리면 참 -e 파일이름 : 파일이 존재하면 참 -f 파일이름 : 파일이 일반 파일이면 참 -g 파일이름 : 파일에 set-group-id가 설정되면 참 -r 파일이름 : 파일이 읽기 가능하면 참 -s 파일이름 : 파일 크기가 0이 아니면 참 -u 파일이름 : 파일에 set-user-id가 설정되면 참 -w 파일이름 : 파일이 쓰기 가능한 상태면 참 -x 파일이름 : 파일이 실행 가능 상태면 참

case ~ esac 문 : if문은 참과 거짓이라는 두가지 경우에만 사용. 여러가지의 경우의 수를 가지고 작업할 경우에 if를 중복해서 사용해야 함. 이럴 때를 위해서 사용하는 경우 case문. 다중 분기라고 함.

예제] case1.sh #!/bin/bash case "$1" in start) echo "시작~~";; stop) echo "중지~~";; restart) echo "다시 시작~~";; *) echo "뭔지 모름~~~";; esac exit 0

실행 확인 : case1.sh stop

'배포 배우기' 카테고리의 다른 글

CI/CD 배포  (0) 2024.08.05
리눅스 쉘 명령어2  (0) 2024.07.30
가상 서버에 jar 파일 넣어서 배포하는 법 - RDS 설정  (0) 2024.07.29
리눅스 다운  (0) 2024.07.25
리눅스 소켓 연결하기 2  (2) 2024.07.24