본문 바로가기

컴퓨터_모바일/리눅스

쉘 스크립트 기초

쉘 스크립트 기초 암기할 것
0 - 표준 입력
1 - 표준 출력
2 - 표준 오류

 

위치 매개변수
$0 실행된 스크립트 이름

 

$1 $1 $2 $3...${10}인자 순서대로 번호가 부여된다. 10번째부터는 "{}"감싸줘야 함
$* 전체 인자                             값
$@ 전체 인자 값($* 동일하지만 쌍따옴표로 변수를 감싸면 다른 결과 나옴)
$# 매개 변수의 총 개수

 

#####################################################################

 

표준 입력은 < 기호를 이용하여 변경한다.
표준 출력은 > 기호를 이용하여 변경한다. 
2>&1

 

디스크립터2 표준 오류는 > 표준출력을 변경한다 무엇으로? 표준 출력으로. 

 

-z string string의 길이가 0이다.
-n string string의 길이가 0이 아니다. 

 

##문자 검사
int1 -eq int2  int1과 int2가 동일하다.
int1 -ne int2 int1과 int2가 동일하지 않다.
int1 -gt int2 int1이 int2보다 크다.
int1 -ge int2 int1이 int2보다 크거나 같다.
int1 -lt int2 int1이 int2보다 작다. 
int1 -le int2 int1이 int2보다 작거나 같다. 
##논리 검사
expr1 -a expr2 논리적 AND
expr1 -o expr2 논리적 OR
!expr 논리적 NOT
##파일 검사
-b 블록형식인가?
-c 문자형식인가?
-d 디렉토리의 존재인가?
-g SetGID가 설정되어있나?

$TERM 터미널 타입

declare -r 변수 읽기 전용 변수로 선언
declare -i변수 정수형 변수로 선언
declare -a 변수 배열 변수로 선언
declare -f 스크립트 안에정의된 모든 함수들을 보여준다.
declare -f 함수 해당 함수 내용을 보여준다.
declare -x 변수 환경변수로 export

## 문자열 비교 연산 ##
문자열1 == 문자열2 두 문자열이 같으면 참 아니면 거짓
문자열1 != 문자열2 두 문자열이 다르면 참 아니면 거짓
-n 문자열 문자열이 null이 아니면 참
-z 문자열 문자열이 null이면 참
## 산술 비교 ##
정수1 -eq정수2 두 정수가 같으면 참 아니면 거짓
정수1 -ne 정수2 두 정수가 다르면 참 아니면 거짓
정수1 -gt 정수2 정수1이 정수2보다 크면 참 아니면 거짓
정수1 -ge 정수2 정수1이 정수2보다 크거나 같으면 참 아니면 거짓
정수1 -lt 정수2 정수1이 정수2보다 작으면 참 아니면 거짓
정수1 -le 정수2 정수1이 정수2보다 작거나 같으면 참 아니면 거짓

## 파일 관련 연산
-a 파일 해당 파일이 존재하면 참
-e 파일 해당 파일이 존재하면 참
-r 파일 사용자가 해당 파일을 읽을 수 있으면 참
-w 파일 사용자가 해당 파일을 쓸 수 있으면 참
-x 파일 사용자가 해당 파일을 실행할 수 있으면 참
-o 파일 사용자가 해당 파일의 소유자이면 참
-z 파일 해당 파일의 크기가 0이면 참
-f 파일 해당 파일이 일반 파일이면 참
-d 파일 해당 파일이 디렉터리이면 참

#export [변수명]=[값]을 통해 변수를 선언하게 되면 쉘 레벨과 관계없이 변수 공유가 가능하다.

sed ’1,3d’  file #1~3 삭제
sed ?n ‘/[Jj]ohn/p file # john John 일치하는 패턴 출력

sed '1,3d' file > temp # 실제 file은 수정되지 않는다. 삭제후 temp로 리다이렉션

====

지역변수는 자신을 생성한 쉘 내에서만 사용된다. 
set 명령은 현재 쉘을 모든 지역변수 출력

>& 표준출력과 표준 오류를 파일로 리다이렉트 할 수 있다. 
cp file1 >& errorfile  file1의 표준출력과 표준오류를 errorfile로 보낸다. 

/etc/profile 시스템 전체적으로 공통된 초기화

순서
~/.bash_profile
/etc/profile
~/.bash_login
~/.profile

역슬래시 \ 어떤 문자가 쉘에 의해 해석되지 않도록 보호


'컴퓨터_모바일 > 리눅스' 카테고리의 다른 글

em1 디바이스를 eth0로 바꾸기  (0) 2019.07.20
du 명령어  (0) 2019.07.20
make 할 때 log 남기기  (0) 2019.07.20
iptables 사용예시  (0) 2019.07.20
vi 편집기 사용 기초  (0) 2019.06.08