티스토리 뷰
[Shell Script] 리눅스 쉘 파헤치기 -2. 배시(bash) 쉘 구조
명 칭 |
설 명 |
소스 예제 |
shbang 줄 |
"shbang" 줄은 스크립트의 가장 첫 줄이며, 커널이 스크립트를 어떤 쉘로 해석할 것인지를 알려준다. |
#!/bin/bash |
주석 |
주석은 # 부호를 시작으로 설명이 오며, 실행할 수 없는 문장이다. |
# 주석처리 |
와일드카드 |
와일드카드는 특별한 밤법으로 쉘이 해석하는 글자이다. 와일드카드는 숫자도, 문자도 아니다. 예를 들어 *, ?, []는 파일명의 확장에 사용된다. !는 히스토리 문자, <, >, 2>, >>, | 부호는 표준 입/출력 리다이렉션과 파이프에 사용된다. !!와일드 카드는 쉘에의해 해석되는 것을 방지하기 위해 역슬래시를 사용하거나 따옴표를 묶어야 한다. |
rm *; ls ??; cat file[1-3]; |
결과 출력 |
화면에 출력하기 위해, echo 명령이 사용된다. 역슬래시나 따옴표로 감싸면 와일드카드는 절대 해당 기능을 할 수 없다. |
echo "이것은 무엇입니까??" |
지역 변수 |
지역변수는 현재 쉘로 제한된다. 스크립트가 끝났을 때나 쉘이 종료되면 더이상 유효하지 않다. 내장함수 declare 또한 변수를 선언하는 데 사용될 수 있다. 지역변수를 설정하고 값이 할당된다. |
variable_name=value declare variable_name=value ex) name="gukii" x=5 |
전역 변수 |
전연벽수는 환경변수라고 불리고 export 내장명령으로 생성된다. 현재 실행중인 쉘로 설정되고 이 쉘로부터 파생된 다른 쉘에도 유효하다. |
export VARIABLE_NAME=value declare -x VARIABLE_NAME=value export PATH=/bin:/usr/bin: |
변수값 추출 |
변수에서 값을 추출하는 데 달러부호가 사용된다. |
echo $variable_name echo $name echo $PATH |
사용자 입력 처리 |
사용자가 입력하라는 메시지가 표시된다. read 명령은 입력줄을 가져오는 데 사용된다. read 명령은 단어로 분리된 라인을 다중 매개변수로 읽을 것이며, 각 단어는 이름이 지정된 변수에 할당될 것이다. |
echo "이름을 입력하세요 : " read name read name1 name2 ... |
매개변수 |
매개변수는 명령줄에서 스크립트로 전달할 수 있다. 위치 매개변수는 스크립트 내부에서 매개변수로 넘어온 값들을 받기 위해 사용된다. |
$ scriptname arg1 arg2 arg3 ... 스크립트:echo $1 $2 $3 위치 매개변수 echo $* 모든위치 매개변수 echo $# 위치 매개변수 개수 |
배열 |
배시 쉘은 내부 구성요소를 접근하는 방식으로 배열 문법을 지원하며, 0으로 시작한다. 배시 쉘은 declare -a 명령으로 배열이 생성된다. |
declare -a array_name=(word1 word2 word3 ...) declare -a fruit=( apples pears plums ) echo ${fruit[0]} |
명령 치환 |
유닉스/리눅스 명령의 결과를 변수에 할당하거나 문자열로 명령의 결과를 사용할 때, 명령을 백쿼트(`)로 묶는다. 또는 백쿼트(`) 대신 $() 형식도 가능하다. |
variable_name=`command` variable_name=$( command ) echo $variable_name echo "오늘은 `date`입니다." echo "오늘은 $(date)입니다." |
수치연산 |
배시 쉘은 정수 연산을 지원한다. declare -i 명령은 정수형 변수로 선언한다. 또는 (( )) 문법(let 명령) 이 연산용 연산자로 사용된다. |
declare -i variable_name (( n=5 + 5 )) echo $n |
연산자 |
배시 쉘은 숫자와 문자열을 검사하는 연산자로 내장 test 명령을 사용한다. |
== 같음 != 같지 않음 > 보다 큼 >= 보다 크거나 같음 < 보다 작음 <= 보다 작거나 같음 && and || or ! not |
조건문 |
if 다음에 조건이 괄호로 묶여서 구성된다. 연산자는 C 연산자와 유사하며, then 키워드는 괄호 다음에 온다. if는 반드시 fi로 끝나야 한다. 새로운 test 명령인 [[ ]] 는 조건문장에서 패턴을 사용할 수 있다. case 명령은 if/else와 동일하다. |
if 구문: if command then 명령어결과가 참일 때, 실행구문 fi ----------------------------- if (( 정수연산 )) then 연산이 참일때, 실행구문 elif (( 정수연산 )) then 연산이 참일때, 실행구문 else 실행구문 fi ----------------------------- if [[ test할 숫자/문자식 ]] then 연산이 참일때, 실행구문 elif [[ test할 숫자/문자식 ]] 연산이 참일때, 실행구문 else 연산이 참일때, 실행구문 fi ----------------------------- case 구문: case variable_name in pattern 1) 실행문 ;; pattern 2|pattern 3) 실행문 ;; *) echo "그 외의 것입니다." ;; esac |
반복문 |
while, untile, for, select 이렇게 네 종류의 반복문이 있다. while 반복문은 이어서 [[ ]] 로 묶인 표현이 나오고, do 예약어로 문장이 시작되어 done 예약어로 끝난다. 조건식이 참일 경우 do와 done 사이 내용이 실행된다. until 반복문은 while 문과 비슷하다. 다른 점은 조건식이 거짓일 때 실행문이 실행된다는 것이다. for 반복문은 단어의 목록을 반복해서 사용한다는 것이다. 시프트를 통해 한 단어를 처리한 후, 다음 단어를 처리한다. 목록의 모든 단어가 시프트 되면 끝낸다. select 반복문은 사용자가 번호가 매겨진 항목에서 선택할 수 있는 메뉴 프롬프트를 제공할 때 사용된다. select 문은 보통 case 명령과 함께 사용된다. 반복문 제어 명령은 break와 continue이다. break 명령은 반복문을 종료하도록 제어하고, continue 명령은 반복문의 끝에 도달하기 전에 반복 조건으로 되돌아가도록 제어한다. |
while command 혹은 [[ 문자식 ]] 혹은 (( 수치식 )) do 반복 실행구문 done ----------------------------- for variable in word_list do 반복 실행구문 done ----------------------------- select variable in word_list do 반복 실행구문 done |
함수 |
함수는 쉘 코드의 영역을 정의해서 이름 지정을 할 수 있는 기능이다. 배시 쉘 버전에서는 function 예약어를 사용한다. |
function_name() { 실행문 } |
이것으로 정리 끗-
'Programming > Shell Script' 카테고리의 다른 글
[Shell Script] 리눅스 쉘 파헤치기 -1. 쉘 소개 (0) | 2018.08.15 |
---|---|
[Shell Script] Backup Shell Script (0) | 2018.08.14 |
[Shell Script] 로그 포맷 생성 (0) | 2018.07.27 |
[Shell Script] 리눅스 명령어 실행 결과를 배열에 담기 (0) | 2018.07.27 |
[Shell Script] 리눅스 명령어 실행결과를 변수에 담기 (0) | 2018.07.27 |
- Total
- Today
- Yesterday
- 배트멍 할인
- 이지 350 지브라
- end 응모
- 나이키 코르테즈
- 파워쉘 문자열 포함 조건
- 이지 700 모브
- 웹쉘 예방
- selinux 사용법
- selinux 설명
- 조던1 사틴 블랙토 개봉기
- linux bridge 설정
- 피파온라인4
- 파워쉘 문자열 포함
- 파워쉘 문자열
- Java
- 조던1 사틴 블랙토
- 리눅스 hostname 변경
- troijan
- 리니지m 격수 팁
- 케니4
- 웹쉘 탐지
- 매치스패션 할인
- 나이키 켄드릭라마
- 조던1 사틴
- selinux 정책설정
- 웹쉘 해결
- CloudStack
- 리눅스 모니터링
- 이지 부스트 700 모브
- 이지 부스트 700
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |