본문 바로가기
CS/운영체제

[쉘 스크립트] 기초_변수_테스트문

by merona99 2021. 10. 24.
반응형

쉘 스크립트 기초_변수_테스트문

 

 

[쉘의 종류]

  • sh : Thompson Shell (1971)
  • bsh : Bourne Shell (1977)
  • csh : C Shell (1979)
  • tsch : Tabbed C Shell (1979)
  • ksh : Korn Shell (1982)
  • bash : Bourne-again Shell (1987)
  • zsh : Z Shell (1990) 
  • dash : Dash Shell (2002

 

 

[쉘 스크립트의 기능]

  • 쉘 명령의 조합
  • 변수 & 배열 선언이 가능함
  • 산술 연산 & 논리 연산이 가능함
  • 조건문 & 반복문이 가능함
  • 함수 선언이 가능함

 

 

[쉘 스크립트 실행방법]

  • ./<쉘 스크립트 파일명>
  • bash <쉘 스크립트 파일명>
  • source <쉘 스크립트 파일명>
  • . <쉘 스크립트 파일명

 

 

[쉘 스크립트 작성 방법]

  • #!/bin/bash를 제일 처음에 붙여주자!
  •   #!/bin/bash
  • 본 쉘 스크립트 파일이 bash 쉘로 실행한다는 점을 뜻함
  •   다른 쉘 스크립트로 실행시키려면, 다른 쉘 명을 입력함
  •   ex) #!/bin/tcsh
  • 입력을 안해도 실행이 되는 이유는 리눅스 배포판은 기본적으로 bash 쉘로 설정되어 있기 때문임

 

 

[사용자 변수 사용하기]

간단한 쉘 스크립트를 작성해보자!

#!/bin/bash
guest=“Gildong”
day=10
echo “$guest checked in $day days ago.”

// 출력 Gildong checked in 10 days ago.

 

※ 사용자 변수 규칙

  • 대소문자 구문 & 최대 20글자 제한
  • 달러 기호($)를 활용하여 참조
  • 변수, 등호, 값 사이에 빈 칸을 둘 수 없음

 

 

[환경변수 사용하기]

간단한 쉘 스크립트를 작성해보자!

#!/bin/bash
echo “User : $USER”
echo “UID : $UID”
echo “HOME : $HOME”

/* 출력
User : merona
UID : 1000
HOME : /home/merona
*/

해당 부분들은 각각 지정해놓은 User, Home의 위치에 따라 다르게 나옴

 

※ 환경 변수 확인하기(set)

  • set 명령어를 활용하여 환경변수 전체 목록 표시
  • grep과 함께 사용하자!

 

 

[명령 치환하기]

간단한 쉘 스크립트를 작성해보자!

#!/bin/bash
TODAY=$(date)
LIST=$(ls -al)
echo "TODAY : $TODAY"
echo "LIST : $LIST“

// 출력
TODAY : Thu Sep 23 19:20:15 KST 2021
LIST : total 0

현재 시각을 TODAY에 저장하고 ls명령어를 LIST에 저장한 것

 

※ 명령 치환 : $(명령어) 형식

  • `명령어`로도 가능 - 작은 따옴표가 아닌 백쿼터(back quote)
  • 참조할 때는 일반 변수와 동일하게 사용함

 

 

[if then 구문]

if command
  then
    commands
  fi

간단한 쉘 스크립트를 작성해보자!

#!/bin/bash
if pwd
then
    echo “Hello World!”
fi

 

※ 명령어 확인

echo $?

명령어를 쳤을때 0이 나오면 전에 친 명령어가 성공적으로 수행됬다는 것

만약 0이 아닌 다른수가 나올 경우 해당 에러에 해당하는 숫자가 나옴

ex) 127, 2 등등..

 

 

 

[test 구문]

if test condition
then
    commands
fi

간단한 쉘 스크립트를 작성해보자!

#!/bin/bash

myuser = merona
if test $mysuer
then
    echo 'true return'
else
    echo 'false return'
fi

// 출력
merona라는 myuser변수가 있다면 true return을 반환
그 외의 경우에는 false return을 반환

 

 

 

[ [] 구문 사용하기]

if [ condition ]
then
    commands
fi

 

※ [] 구문의 숫자 비교 방법

번호 명령어 설명
1 n1 -eq n2 n1 == n2 ?
2 n1 -ne n2 n1 != n2 ?
3 n1 -ge n2 n1 >= n2 ?
4 n1 -gt n2 n1 > n2 ?
5 n1 -le n2 n1 <= n2 ?
6 n1 -lt n2 n1 < n2 ?

 

 

※ [] 구문의 문자열 비교 방법

번호 명령어 설명
1 str1 = str2 str1 == str2 ?
2 str1 != str2 str1 != str2 ?
3 str1 < str2 str1이 더 짧은 문자열인가?
4 str1 > str2 str1이 더 긴 문자열인가?
5 -n str1 길이가 0보다 큰가?
6 -z str2 길이가 0인가?

 

 

※ [] 구문의 파일 비교 방법

번호 명령어 설명
1 -d file 파일이 존재하고, 디렉토리인가? (파일 X)
2 -e file 파일이 존재하는가?
3 -f file 파일이 존재하고, 파일인가? (디렉토리 X)
4 -r file 파일이 존재하고, 읽을 수 있는가?
5 -w file 파일이 존재하고, 기록할 수 있는가?
6 -x file 파일이 존재하고, 실행할 수 있는가?
7 -s file 파일이 존재하고, 비어 있지 않은가?
8 -O file 파일이 존재하고, 현재 사용자가 소유한 것인가?
9 -G file 파일이 존재하고, 기본 그룹이 현재 사용자와 같은가?
10 file1 -nt file2 file1이 file2보다 새건가?
11 file1 -ot file2 file1이 file2보다 오래된건가?

 

 

 

 


 

// 오픈소스SW개론 4주차

 

반응형

댓글