반응형
쉘 스크립트 기초_변수_테스트문
[쉘의 종류]
- 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주차
반응형
'CS > 운영체제' 카테고리의 다른 글
[면접을 위한 CS 전공지식 노트] 운영체제 (0) | 2023.07.28 |
---|---|
[소프트웨어 공학] 소프트웨어 공학이란? (0) | 2021.10.16 |
[쉘 스크립트] 기초 (0) | 2021.10.14 |
[소프트웨어의 역사] 유닉스 vs 리눅스 (0) | 2021.10.14 |
[리눅스] 명령어 (검색, 비교) (0) | 2021.10.14 |
댓글