Shell
- Shell이란 유닉스 리눅스 환경의 대화형 사용자 인터페이스를 말한다.
- 운영체계의 바깥 계층에 위치하며, 사용자와 커널의 의사소통을 담당
- cshell, bourneshell, bashshell, tcshell, kornshell, 등 다양한 종류가 있음
- shell도 하나의 프로세스이다.
- 사용자가 입력하는 명령어를 이해하고, 실행하는 역할
- 파이프, 리다이렉션, 백그라운드 프로세스 처리
- 시그널 처리
Bash Shell 변수
지역 변수: 자신을 생성한 Shell 프로세스 안에서만 사용할 수 있다.
putty 접속 1개 > shell process 1개
다른 putty 접속에서 생성한 지역변수는 다른 putty 접속에서는 사용할 수 없다.
환경 변수 : 자신을 생성한 Shell뿐만 아니라, 이로부터 파생되어 나온 자식 프로세스에서도 사용할 수 있다.
다른 putty 접속에서 생성한 환경변수도 마찬가지로 다른 putty 접속에서는 사용할 수 없다.
영구적으로 사용할 변수
vi /root/.bash_profile (사용자의 스켈파일)
사용자별로 환경변수를 편집할 수 있다.
source /root/.bash_profile
편집한 .bash_profile를 로드시켜준다.
변수 명칭 표준
변수 이름에는 알파벳 “a~z”, “A~Z”, “0~9”, 언더스코어( _ )로 이루어진 총 63개의 문자를 사용 할 수 있으며, 변수명의 첫 글자는 반드시 알파벳 혹은 밑줄문자 ( _ )이어야 한다.
변수에 값 할당하기
등호( = )를 사용하며, 등호( = ) 양쪽에는 공백이 올 수 없다.
지역 변수 선언 : # A=Linux | # declare B=Shell
환경 변수 선언 : # export NAME=“YSY“
환경 변수 선언 : # declare -x TEST=“hello“
환경 변수 치환 : # export –n “환경변수” | # declear –a “환경변수”
변수 목록 출력 : # env | # printenv | # export
변수 출력 예시 : # echo $A | # echo $B | # echo $NAME
# mkdir /shell
# cd /shell
# vi /test.sh
변수만들고 출력하는 간단한 작업들
모든 쉘스크립트는 어떤 쉘에서 실행할것인지 명시 shell bin code
shell script 는 프로그램 개발용이 절대 아니다.
어떤 반복적이고 정형화된 작업을 편하게 수행하기 위해서 사용하는것
최대한 간결하고 쉽게 작성하는게 중요하다.
EX) lst=$(ls -l)
> ls -l 명령어를 수행하고 lst에 저장해라
EX) date=$(date)
> date 명령어를 수행하고 date에 저장해라
기본적으로 실행 권한이 빠져있다.
실행 결과
file1 파일까지 생성되었다.
/u : 사용자
/h : 호스트
/W : working dir
/T : time
# vi /shell/calc.sh
간단한 연산
echo -n > 라인변경안하겠다.
read num1 > num1 변수에 첫번째 값 저장 (문자열로 인식)
`` > (' ' 홑따옴표 아님)
*와 ()는 리눅스에서 기능을 수행하고있기 때문에 이스케이프문자(\)가 필요하다.
실행권한 부여하고 실행
# vi /shell/arg.sh
인자값 지정
readonly > text는 상수
$0 > 쉘스크립트의 파일이름 자동으로 저장된다.
$1 > 저장되는 인자값 순서대로 1부터 저장된다.
실행권한 부여하고 실행
인자값을 지정하지 않고 실행했을 때 / 인자값을 지정하고 실행했을 때
# vi /shell/arr.sh
배열 생성
()를 사용하면 배열로 인식
띄어쓰기로 구분
echo ${#arr1[@]}
@ : 배열 그룹 전체 선택
# : 배열 속 데이터 갯수
실행권한 부여하고 실행
'[Linux]' 카테고리의 다른 글
[Linux] 리눅스 Shell Script 제어문 2 (for, while, 사용자 정의 함수) (0) | 2022.06.24 |
---|---|
[Linux] 리눅스 Shell Script 제어문 1 (if-else, case, select) (0) | 2022.06.23 |
[Linux] 리눅스 PAM (0) | 2022.06.21 |
[Linux] ELK 실습 (0) | 2022.06.20 |
[Linux] 리눅스 log (0) | 2022.06.16 |