-
[Ubuntu] shell script 작성법CI-CD/Ubuntu 2022. 6. 15. 14:17반응형
쉘 스크립트란?
unix계열에서 특정 명령어를 파일 형식으로 작성하여 한번에 돌릴 수 있도록 코딩 하는 것, python script, java script 같은 것이라고 보면된다.
기본 작성 내용
- 확장자는 .sh 로 작성
- #!는 she bang 이라는 것으로 먼저 #!/bin/sh로 shell 스크립트라는 것을 인식시켜 준다 #!/usr/python3 형식으로 적는다면 python 스크립트로 인식하게 된다.
- 명령어는 sh, bash 로 작성하여 실행 시킨다.
chmod 755 test.sh sh test.sh bash test.sh
주석
#로 코멘트 처리 함
#!/bin/sh # <- # 글자로 시작하면 코멘트나 주석을 달 수 있다.
입/출력
echo는 출력, read는 읽기
#!/bin/sh # NAME은 환경 변수에 등록 되어있는 것을 읽어 온다. read NAME ehco "Hello, $NAME!" # 개행 문자 echo -e "Hello, $NAME"
변수
#!/bin/sh # 변수는 타입없이 그냥 바로 작성한다. var="변수1" # 대문자와 언더바 사용가능 Var_2="변수2" # 다른 곳에서 '$'를 붙여 소환 가능 echo "var_2=$Var_2"
내장 변수
변수 설명
$0 스크립트명 $1~$9 인수로 들어온 것을 순서대로 반환(ex : ssh test@192.168.1.25 test copy) $1 = test@192.168.1.25, $2 = test , $3 = copy $# 스크립트로 전달된 인수의 수 $* 모든 인수 하나로 처리 $@ 모든 인수를 각각 처리 $? 직전에 실행한 커멘드의 종료값 0 = 성공 , 1 = 실패 $$ 해당 쉘 스크립트의 프로세스 ID $! 마지막으로 실행한 백그라운드 프로세스 ID 배열(bash)
#!/bin/bash array=(item1, item2, item3, item4) array[0]="ITEM1" array[2]="ITEM3" # 하나의 값만 출력 echo "array[0] : ${array[0]}" echo "array[1] : ${array[1]}" # ARRAY[0]: ITEM1 # ARRAY[1]: item2 # 모든 값 출력 echo "array[*] : ${array[*]}" echo "array[@] : ${array[@]}" # ARRAY[*]: ITEM1 item2 ITEM3 item4 # ARRAY[@]: ITEM1 item2 ITEM3 item4
오퍼레이터(연산자)
산수 연산자는 expr 숫자 연산자 숫자 를 이용하여 계산한다.
연산자 의미 예
+ 덧셈 expr 10 + 20 = 뺄셈 expr 20 - 10 \* 제곱 expr 11\*11 / 나눗셈 expr 10/2 % 나머지 expr 10 % 4 = 자정 a=$b b의 값을 a로 저장 == 동일 [”$a” == “$b”] $a과 $b가 동일하지 않는 경우 TRUE가 반환된다. != 다름 [”$a” != “$b”] $a과 $b가 동일하지 않는 경우 TRUE가 반환된다. 비교연산자는 “[ ]”를 기준으로 비교를 한다.
비교 의미
-eq 동일 -na 다음 -gt 보다 큼 -lt 보다 작음 -ge 보다 크거나 같거나 -le 보다 작거나 같거나 ! 같지 않다 -o 어느쪽이든 -a 양쪽 -z 문자열이 비었는가 -n 문자열이 비었는가 if 조건문
조건문은 if [ 조건 ] then 커맨드 fi 다른 것을 실행 할려면 elif [ 조건 ]에 적힌 내용을 확인
#!/bin/sh if [ "$1" -gt "$2"] then echo "1번째 인수가 2번째 인수보다 크다" elif [ "$1" -eq "$2"] then echo "1번째 인수가 2번째 인수가 동일하다" else echo "1번째 인수가 2번쟤 인수보다 작다." fi
switch 조건
case 변수 in 조건 - 값) 커맨드 ;; esac 로 구성한다.
#!/bin/sh DRINK="coffe" case $DRINK in "beer") echo "맥주" ;; "juice") echo "주스" ;; "coffe") echo "프로그래머가 마시면 커피로 변화!" ;; esac
루프 반복문
while문
break로 종료 continu로 계속 돌림 가능
#!/bin/sh a=0 while [ $a -lt 5] do echo $a a = `expr $a + 1` done
until 문
while과 반대로, 조건과 일치할 때까지 반복된다.
#!/bin/sh a=0 until [ ! $a -lt 5 ] do echo $a a = `expr $a + 1` done
for문
for var in 0 1 2 3 4 do echo $var done
함수(function)
#!/bin/sh # 기본 함수 MyFunction() { echo "함수의 echo이다." } # 인자를 사용한 함수 MyFunction() { func_a=$1 func_b=$2 echo "$func_a $func_b" }
반응형'CI-CD > Ubuntu' 카테고리의 다른 글
[Ubuntu rsa] rsa를 이용하여 다른 서버 로그인 자동화 하기 (0) 2022.06.15 [Ubuntu] ssh로 외부 원격에 명령어 실행하기 (0) 2022.06.15 [ubuntu] iptables 명령어 정리 (0) 2022.06.10 [Ubuntu] SCP(secure copy)를 이용하여 파일 전송하기 (0) 2022.06.08 [Ubuntu] mysql 명령어 정리 (0) 2022.05.21