You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 쉘 스크립트 문법 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Toplist.maxfit.vn team, along with other related topics such as: 쉘 스크립트 문법 쉘스크립트 짜기, 쉘 스크립트 if, 쉘 스크립트, 쉘 스크립트 활용 사례, 쉘 스크립트 명령어 실행, 쉘 스크립트 의미, 쉘 스크립트 1, 쉘 스크립트 테스트
- 쉘 스크립트는 파일로 작성 후, 파일을 실행 한다.
- 파일의 가장 위 첫 라인은 #!/bin/bash로 시작한다.
- 쉘 스크립트 파일은 코드를 작성한 후에는 실행 권한을 부여해야한다.
- 일반적으로 ‘파일이름.sh’ 와 같은 형태로 파일 이름을 작성한다.
쉘(bash Shell) 스크립트 기본 문법, 실제 예제(백업하기, 로그 파일 정리하기)
- Article author: probe29.tistory.com
- Reviews from users: 40844 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about 쉘(bash Shell) 스크립트 기본 문법, 실제 예제(백업하기, 로그 파일 정리하기) Updating …
- Most searched keywords: Whether you are looking for 쉘(bash Shell) 스크립트 기본 문법, 실제 예제(백업하기, 로그 파일 정리하기) Updating #쉘 스크립트 서버 작업 자동화 및 운영(DevOps)을 위해 기본적으로 익혀둘 필요가 있다. 쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태 시스템 프로그래밍에서 꼭 익히는 내용 중 하나이다. 최근 perl..
- Table of Contents:
Researcher to Developer
쉘(bash Shell) 스크립트 기본 문법 실제 예제(백업하기 로그 파일 정리하기) 본문
Shell Script 문법 정리
- Article author: blog.d0ngd0nge.xyz
- Reviews from users: 2891 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about Shell Script 문법 정리 리눅스와 유닉스에서는 Shell Script라는 단어를 사용하지만, 윈도우에서는 batch(배치파일, .bat)이 사용되며 서로 다른 문법으로 작동된다. …
- Most searched keywords: Whether you are looking for Shell Script 문법 정리 리눅스와 유닉스에서는 Shell Script라는 단어를 사용하지만, 윈도우에서는 batch(배치파일, .bat)이 사용되며 서로 다른 문법으로 작동된다.
- Table of Contents:
Menu
Recent Posts
Shell Script 기초 문법
- Article author: w51014.tistory.com
- Reviews from users: 30736 Ratings
- Top rated: 3.0
- Lowest rated: 1
- Summary of article content: Articles about Shell Script 기초 문법 Shell Script 기초 문법 … 쉘 스크립트의 프로세트 ID. 1.2 인자변수. -쉘스크립트에 인자를 넘겨줄때 그 인자들에 대한 정보를 가지고 있는 변수. …
- Most searched keywords: Whether you are looking for Shell Script 기초 문법 Shell Script 기초 문법 … 쉘 스크립트의 프로세트 ID. 1.2 인자변수. -쉘스크립트에 인자를 넘겨줄때 그 인자들에 대한 정보를 가지고 있는 변수. 출처 : https://wiki.kldp.org/wiki.php/ShellProgrammingTutorial 1. 변수 – 쉘변수는 대소문자를 구분함. – 쉘변수는 데이터를 문자열로 저장하여, 실제 수치를 대입해도 문자열이 저장, 계산이 필요하면 자..
- Table of Contents:
4 제어문
5 함수
6 명령어
7 명령 실행
8 쉘 스크립트 내부에서 명령에 입력 전달하기 (Here Documents)
9 디버깅 하기
Bash 입문자를 위한 핵심 요약 정리 (Shell Script) – 개발자스럽다
- Article author: blog.gaerae.com
- Reviews from users: 9540 Ratings
- Top rated: 3.9
- Lowest rated: 1
- Summary of article content: Articles about Bash 입문자를 위한 핵심 요약 정리 (Shell Script) – 개발자스럽다 Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다. (이런 것도 있구나 싶을 정도만 이해하도록 간단한 설명과 예제로 작성됨) … …
- Most searched keywords: Whether you are looking for Bash 입문자를 위한 핵심 요약 정리 (Shell Script) – 개발자스럽다 Bash 입문자를 위한 기본적인 문법과 알고 있으면 좋은 것들만 정리했다. (이런 것도 있구나 싶을 정도만 이해하도록 간단한 설명과 예제로 작성됨) … 개발자스럽다, Bash 입문자를 위한 핵심 요약 정리 (Shell Script), jasa desain grafis,desain grafis,desain grafis murah,jasa desain logo,desain murah,desain logo murah,desain logo,jasa desain,desain murah indonesia,bikin logo murah,jasa desain murah,logo murah
- Table of Contents:
[LINUX] 📚 BASH 쉘 프로그래밍 문법 마스터 💯 총정리 (+ 연습예제)
- Article author: inpa.tistory.com
- Reviews from users: 10563 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about [LINUX] 📚 BASH 쉘 프로그래밍 문법 마스터 💯 총정리 (+ 연습예제) Shell Script는 Shell이나 command line 인터프리터에서 구동되도록 작성된 스크립트다. 윈도우에서는 batch(배치파일, .bat) 을 한번쯤은 본적 … …
- Most searched keywords: Whether you are looking for [LINUX] 📚 BASH 쉘 프로그래밍 문법 마스터 💯 총정리 (+ 연습예제) Shell Script는 Shell이나 command line 인터프리터에서 구동되도록 작성된 스크립트다. 윈도우에서는 batch(배치파일, .bat) 을 한번쯤은 본적 … Shell Script 란 Shell Script는 Shell이나 command line 인터프리터에서 구동되도록 작성된 스크립트다. 윈도우에서는 batch(배치파일, .bat) 을 한번쯤은 본적이 있을 것이다. bat 파일을 실행하면 프로그램..
- Table of Contents:
Shell Script 란
쉘 스크립트 문법 정리 (Shell Programming)
BASH 쉘 스크립트 연습문제 코드
방문해 주셔서 감사드립니다
공지사항
최근 댓글 new
최근 글 new
인기 글 hot
티스토리툴바
[Linux] 쉘 스크립트 기본 문법
- Article author: spacebike.tistory.com
- Reviews from users: 31013 Ratings
- Top rated: 3.9
- Lowest rated: 1
- Summary of article content: Articles about [Linux] 쉘 스크립트 기본 문법 쉘 스크립트 문법 정리가 잘된 글이 있어 링크 남깁니다. https://reakwon.tistory.com/136 [리눅스] 쉘 스크립트(Shell script) 기본 문법, … …
- Most searched keywords: Whether you are looking for [Linux] 쉘 스크립트 기본 문법 쉘 스크립트 문법 정리가 잘된 글이 있어 링크 남깁니다. https://reakwon.tistory.com/136 [리눅스] 쉘 스크립트(Shell script) 기본 문법, … 쉘 스크립트 문법 정리가 잘된 글이 있어 링크 남깁니다. https://reakwon.tistory.com/136 [리눅스] 쉘 스크립트(Shell script) 기본 문법, 작성방법(변수,반복문,비교문,종료상태 등) 쉘스크립트 기본 쉘 스크립..
- Table of Contents:
댓글
이 글 공유하기
다른 글
[Linux] Vim 설치 및 vimrc 설정티스토리툴바
Linux 쉘스크립트 문법 및 예제
- Article author: dazemonkey.tistory.com
- Reviews from users: 7621 Ratings
- Top rated: 4.0
- Lowest rated: 1
- Summary of article content: Articles about Linux 쉘스크립트 문법 및 예제 쉘의 종류에 따라 문법의 차이가 존재하는데, 배시쉘 문법에 맞게 작성한 스크립트를 본쉘 환경에서 실행하면 에러가 발생한다. 예를 들면, awk -F ‘:’는 배시쉘 환경 … …
- Most searched keywords: Whether you are looking for Linux 쉘스크립트 문법 및 예제 쉘의 종류에 따라 문법의 차이가 존재하는데, 배시쉘 문법에 맞게 작성한 스크립트를 본쉘 환경에서 실행하면 에러가 발생한다. 예를 들면, awk -F ‘:’는 배시쉘 환경 … 리눅스(Linux), 유닉스(Unix) 종류에 따라 기본적으로 지원되는 쉘이 다르다. RHEL/CentOS는 기본적으로 배시쉘(Bash)을 사용하고, SunOS/Solaris는 본쉘(sh)을 사용한다. 현재 시스템에 설정되어 있는 쉘을 확인..
- Table of Contents:
쉘 스크립트(shell script) 기본 문법
- Article author: fourz.tistory.com
- Reviews from users: 35067 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about 쉘 스크립트(shell script) 기본 문법 CLI 환경을 사용하면서 알고 있으면 좋을 만한 쉘 기본 문법들에 대해서 정리해봤습니다. #(sharp). shell script에서 #은 기본적으로 주석에 쓰 … …
- Most searched keywords: Whether you are looking for 쉘 스크립트(shell script) 기본 문법 CLI 환경을 사용하면서 알고 있으면 좋을 만한 쉘 기본 문법들에 대해서 정리해봤습니다. #(sharp). shell script에서 #은 기본적으로 주석에 쓰 … CLI 환경을 사용하면서 알고 있으면 좋을 만한 쉘 기본 문법들에 대해서 정리해봤습니다. #(sharp) shell script에서 #은 기본적으로 주석에 쓰입니다. 하지만 다양한 곳에서 혹은 잘 모르지만 영어권..
- Table of Contents:
ForFour
쉘 스크립트(shell script) 기본 문법 본문
티스토리툴바
[Linux] shell(script) 기본 문법 정리 — 항상 끈기있게
- Article author: nayoungs.tistory.com
- Reviews from users: 48335 Ratings
- Top rated: 3.0
- Lowest rated: 1
- Summary of article content: Articles about [Linux] shell(script) 기본 문법 정리 — 항상 끈기있게 shell이란? shell script란? shell script 문법. 기본 출력; 변수; 종료 상태(Exit Status); 명령어의 연속 실행; 기본 입력; 크기 비교(조건문) … …
- Most searched keywords: Whether you are looking for [Linux] shell(script) 기본 문법 정리 — 항상 끈기있게 shell이란? shell script란? shell script 문법. 기본 출력; 변수; 종료 상태(Exit Status); 명령어의 연속 실행; 기본 입력; 크기 비교(조건문) … 📌INDEX shell이란? shell script란? shell script 문법 기본 출력 변수 종료 상태(Exit Status) 명령어의 연속 실행 기본 입력 크기 비교(조건문) if 문 while 문 until loop for 문 ✔️ shell이란? 리눅스의 sh..
- Table of Contents:
블로그 메뉴
공지사항
인기 글
태그
최근 댓글
최근 글
티스토리
✔️ shell이란
✔️ shell script란
✔️ shell script 문법
티스토리툴바
[Shell Script] 기초 문법 – 변수
- Article author: velog.io
- Reviews from users: 5023 Ratings
- Top rated: 5.0
- Lowest rated: 1
- Summary of article content: Articles about [Shell Script] 기초 문법 – 변수 쉘 스크립트를 작성할 때 가장 많이 사용하는 기초 문법을 알아보자. …
- Most searched keywords: Whether you are looking for [Shell Script] 기초 문법 – 변수 쉘 스크립트를 작성할 때 가장 많이 사용하는 기초 문법을 알아보자. 쉘 스크립트를 작성할 때 가장 많이 사용하는 기초 문법을 알아보자.
- Table of Contents:
sh 명령어를 사용하여 실행하기
chmod 명령어 사용하여 실행하기
다른 방법으로 실행하기
변수 선언
변수의 종류
매개변수 확장
See more articles in the same category here: toplist.maxfit.vn/blog.
쉘(bash Shell) 스크립트 기본 문법, 실제 예제(백업하기, 로그 파일 정리하기)
#쉘 스크립트
서버 작업 자동화 및 운영(DevOps)을 위해 기본적으로 익혀둘 필요가 있다.
쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태
시스템 프로그래밍에서 꼭 익히는 내용 중 하나이다.
최근 perl 이나 python이 사용되고 있다.
– 쉘 스크립트를 사용하는 경우
서버가 다운되어서 확인해보니 서버 저장공간이 하나도 남아 있지 않았다.
이유는 로그 파일이 많이 쌓였기 때문이었다.
로그 파일이 업데이트가 안되어 관련 프로그램이 비정상적으로 종료되었다.
어떻게 하면 자동으로 오래된, 혹은 일정 시간 경과한 로그 파일을 삭제할 수 있을까??
이런 문제를 간단한 쉘 스크립트 생성 및 주기적 실행으로 해결할 수 있다.
* 로그 파일 : 서버에 어떤 일이 있었고 어떤 동작을 했었는지 기록해놓는 파일
* ‘crontab’ : 주기적으로 실행하는 프로그램
#쉘 스크립트 기본 문법
1. 쉘 스크립트는 파일로 작성 후, 파일을 실행 한다.
2. 파일의 가장 위 첫 라인은 #!/bin/bash로 시작한다.
3. 쉘 스크립트 파일은 코드를 작성한 후에는 실행 권한을 부여해야한다.
4. 일반적으로 ‘파일이름.sh’ 와 같은 형태로 파일 이름을 작성한다.
5. 주석은 #내용 으로 처리한다.
‘vi 파일이름.sh’ 로 파일을 만들고 insert 를 눌러 작성한 다음 다시 insert 를 누르고 esc 를 누른다음 :wq로 저장한다.
다음의 여러 예제들에서는 chmod 777 로 파워권한을 주어 실행(./ 파일이름.sh) 하도록 한다.
예제 1.
bash 쉘에서 제공하는 echo 함수를 이용하여
화면에 “Hello bash!”를 출력할 수 있도록 스크립트를 작성해보자
echo는 화면에 출력해주는 쉘 명령어다.
vi hello.sh
#!/bin/bash // 쉘 스크립트의 시작
echo “Hello Bash!” // echo 함수 사용
ls -al 로 확인해보면 실행 권한이 없어서
chmod 777 hello.sh 를 입력해서 전체 권한을 준다.
아직 path로 잡혀 있지 않아서
./ 로 실행하면
Hell Bash! 가 출력되는 것을 확인할 수 있다.
변수, 조건문, 반복문 – 여러 쉘 명령어를 조합해서 프로그래밍한다.
#변수
– 선언
변수명=데이터
변수명=데이터 사이에 띄어쓰기는 허용되지 않는다.
– 사용
$변수명 (echo $변수명 $변수명 …. )
코드 예는 다음과 같다.
#!/bin/bash
mysql_id=’root’
mysql_directiory=’/etc/mysql’
echo $mysql_id
echo $mysql_directory
예제 2.
아이디 관련 정보 변수를 만들어보자
실제 이름
나이
직업
vi id.sh
#!/bin/bash
myname=’probecoding’
myage=30 // 숫자는 따옴표 처리 안해도 된다.
mycarrer=’IT’
echo $myname $myage $ mycarrer
결과적으로 이와 같이 출력된다.
probecoding 30 IT
#리스트 변수(배열)
– 선언
변수명=(데이터1데이터2데이터3…)
– 사용
${변수명[인덱스번호]} : 인덱스번호는 0이 시작 이다.
코드 예는 다음과 같다.
#!/bin/bash
daemons=(“httpd” “mysqld” “vsftpd”) // 변수 선언
echo ${daemons[1]} // $daemons 배열의 두 번째 인덱스에 해당하는 myspld 출력
echo ${daemons[@]} // $daemons 배열의 모든 데이터 출력
echo ${daemons[*]} // $daemons 배열의 모든 데이터 출력
echo ${#daemons[@]} // $daemons 배열의 배열 크기 출력
filelist=( $(ls) ) // 해당 쉘 스크립트 실행 디렉토리의 파일 리스트를 배열로 변수 선언
echo ${filelist[*]} // $filelist 모든 데이터 출력
결과적으로 이와 같이 출력된다.
mysqld
httpd mysqld vsftpd
httpd mysqld vsftpd
3
array.sh ~.sh ~.sh …(모든 파일 리스트가 나열됨)
* 특수 상황
$(daemons[1]) 이 아니라 $daemons[1] 라고 입력할 경우
쉘 스크립트는 daemons 까지를 읽고 데이터로 변환시켜고 [1] 이거는 일반적인 스트링이구나
라고 인식해서 httpd[1] 이라고 출력된다.
예제 3.
아이디 관련 정보 리스트 변수로 만들고, 각 정보를 출력해보자
실제 이름(0번 인덱스)
나이(1번 인덱스)
직업(2번 인덱스)
#!/bin/bash
mine=(“probecoding” “30” “IT”)
echo ${mine[*]} // $mine 모든 데이터 출력
결과적으로 이와 같이 출력된다.
probecoding 30 IT
쉘 스크립트의 기본 문법은 까다롭다. 가변적으로 문법을 바꿔도 동작을 하긴하지만 환경에 따라 동작을 달리한다.
#사전에 정의된 지역 변수
$$ : 쉘의 프로세스 번호 (pid)
$0 : 쉘 스크립트 이름
$1~$9 : 명령줄 인수
$* : 모든 명령줄 인수 리스트
$# : 인수의 개수
$? : 최근 실행한 명령어의 종료 값
– 0 성공, 1~125 에러, 126 파일이 실행가능하지 않음, 128~255 시그널 발생
ls -al -z 의 경우
ls 가 $$
-al 이 $1
-z 가 $2
$#은 2개
예제 4.
쉘 프로세스 번호, 쉘 스크립트 이름, 명령줄 인수, 모든 명령줄 인수 리스트, 인수 개수 출력해보기
vi shell.sh
#!/bin/bash
echo $$ $0 $1 $* $#
$$ 는 pid
$0 은 이름
$1 은 첫번째 인자
$* 는 이름을 뺀 나머지 인자 리스트
$# 는 이름을 뺀 나머지 인자 개수
이렇게 저장한 다음
파일이름이 shell.sh 이라서 ./shell.sh 로 실행해보면
15242 ./shell.sh 0 이렇게 출력된다.
./shell sh kkk 이렇게 실행해보면
15243 ./shell.sh kkk kkk 1 이렇게 출력된다.
./shell.sh kkk 222 이렇게 실행해보면
15249 ./shell.sh kkk kkk 222 2 이렇게 출력된다.
#연산자
expr : 숫자 계산
1. expr 를 사용하는 경우 역 작은 따옴표 (`) 를 사용해야한다. ` ` ` ` ` ` `
2. 연산자 * 와 괄호 ( ) 앞에는 역 슬래시를 같이 사용해야 한다. \ \ \ \ \ \ (붙여 쓴다.)
3. 연산자와 숫자, 변수, 기호 사이에는 space를 넣어야한다.
뭐가 이렇게 복잡해
코드 예는 다음과 같다.
#!/bin/bash
num=`expr \( 3 \* 5 \) / 4 + 7` ( 터미널에서는 \가 역슬래시로 나온다.)
예제 5.
expr 명령으로 (10+20)/8 – 8 계산해보기
#!/bin/bash
num=`expr \( 10 + 20 \) / 8 – 8`
-5 가 출력된다.
#조건문 문법
* 기본 if 문법
then 과 fi 안에만 들어가 있으면 되기 때문에
명령문을 꼭 탭으로 띄워야 하는 것은 아니다.
if [ 조건 ]
then
명령문
fi
python이 얼마나 가독성이 좋은지 이해할 수 있다….
예제 6.
두 인자값을 받아서 두 인자값이 다르면 ‘different values’ 를 출력해보자
#!/bin/bash
if [ $1 != $2 ] // != 둘이 다르면 이라는 의미
then
echo “different values”
exit
fi
!=
둘이 다르면 이라는 의미
echo $ 를 사용하지 않고
echo “문장” 이라고 사용한다.
결과적으로 이와 같이 출력된다.
different values
조건
조건 작성이 다른 프로그래밍 언어와 달리 가독성이 현저히 떨어진다. 필요할 때마다 참조하면 됨!
문자1 == 문자2 // 문자 1과 문자 2가 일치
문자1 != 문자2 // 문자 1과 문자 2가 일치하지 않는다.
-z 문자 // 문자가 null 이면 참(값이 없으면 true)
-n 문자 // 문자가 null 이 아니면 참
수치 비교
<, > 는 if 조건 시 [[]]를 넣는 경우 정상 작동하기는 하지만, 기본적으로 다음 문법을 사용한다.
값1 -eq 값2 //값이 같음(equal)
값1 -ne 값2 //값이 같지 않음(not equal)
값1 -lt 값2 //값1이 값2보다 작음(less than)
값1 -le 값2 //값1이 값2보다 작거나 같음(less or equal)
값1 -gt 값2 //값1이 값2보다 큼(greater than)
값1 -ge 값2 //값1이 값2보다 크거나 같음(greater or equal)
파일 검사
-e 파일명 //파일이 존재하면 참
-d 파일명 //파일이 디렉토리면 참
-h 파일명 //파일이 심볼릭 링크 파일이면 참
-f 파일명 //파일이 일반파일이면 참
-r 파일명 //파일이 읽기 가능하면 참
-s 파일명 //파일크기가 0이 아니면 참
-u 파일명 //파일이 set-user-id가 설정되면 참
-w 파일명 //파일이 쓰기 가능이면 참
-x 파일명 //파일이 실행 가능이면 참
예제 7.
쉘 스크립트로 해당 파일이 있는지 없는지 확인해보자
#!/bin/bash
if [ -e $1 ]
then
echo “file exist”
fi
라고 코드를 작성하고
./if3.sh (파일명) 으로 현재 찾는 파일이 디렉토리에 있다면
file exitst 가 출력되는 것을 확인할 수 있다.
논리 연산 (참고)
조건1 -a 조건2 //AND
조건1 -o 조건2 //OR
조건1 && 조건2 //양쪽 다 성립
조건1 || 조건2 //한쪽 또는 양쪽 다 성립
!조건 // 조건이 성립하지 않음
true // 조건이 언제나 성립
false // 조건이 언제나 성립하지 않음
* 기본 if/else 구문
if [ 조건 ]
then
명령문 // 이 명령문에는 참일 때
else
명령문 // 이 명령문에는 거짓일 때
fi
예제 8.
두 인자값을 받아서 두 인자값이 같으면 ‘same value’, 다르면 ‘different value’가 출력되도록 해보자
#!/bin/bash
if [ $1 -eq $2 ]
then
echo “same values”
else
echo “different values”
fi
라고 작성
하고 인자를 같게 넣으면 same values,
다르게 넣으면 different values 가 출력되는 것을 확인할 수 있다.
ping
서버에서 여러 가지 컴퓨터가 연결되어 있을 때
연결된 특정 컴퓨터가 정상적으로 동작하는 지,꺼져 있는지, 비정상적으로 동작하는지 확인하는 명령어
해당 컴퓨터의 ip 주소로 ping 명령어를 실행한다.
그 주소에 확인 요청을 한다.
정상적인 컴퓨터는 응답을 한다.
응답이 오지 않으면 정상적으로 동작하지 않는다고 판단한다.
ping -c 1 192.168.0.1 1>/dev/null
0 : 표준입력, 1 : 표준출력, 2 : 표준에러
1>/dev/null : 표준 출력 내용은 버려라 (출력하지 말아라)
-c 1 : 1번만 체크해봐라 라는 의미
코드 예제는 다음과 같다.
#!/bin/bash
ping -c 1 192.168.0.1 1> /dev/null
if [ $? == 0 ]
then
echo “Gateway ping success!” // 0 일 경우 응답이 온 것이라 성공!
else
echo “Gateway ping failed!” // 응답이 없을 때 나타남
fi
$? : 가장 최근에 쉘 스크립트에서 실행한 명령의 결과값을 가져온다.
조건문 한줄에 작성하기 (if 구문)
if [ 조건 ]; then 명령문; fi
if [ -z $1 ]; then echo ‘Insert arguments”; fi
if [ 뒤와 ] 앞에는 반드시 공백이 있어야함 [ ] 에서 &&, ||, <, > 연산자들이 에러가 나는 경우는 [ [ ] ] 를 사용하면 정상 작동하는 경우가 있음
반복문 문법 – 기본 for 구분
for 변수 in 변수값1 변수값2 ….
do
명령문
done
예제 8.
현재 디렉토리에 있는 파일과 디렉토리를 출력해보자
#!/bin/bash
for database in $(ls)
do
echo $database
done
이렇게 쓰거나
#!/bin/bash
for database in $(ls); do
echo $database
done
이렇게 쓰거나
#!/bin/bash
for database in $(ls); do echo $database; done
또는
#!/bin/bash
lists=$(ls)
num=${#lists[@]}
index=0
while [ $num -ge 0 ]
do
echo ${lists[$index]}
index=`expr $index + 1`
num=`expr $num – 1`
done
로 작성할 수 있다.
반복문 문법 – 기본 while 구문
while [ 조건문 ]
do
명령문
done
#쉘 스크립트 실제 예제
1. 백업하기
코드 예제는 다음과 같다.
#!/bin/bash
if [ -z $1 ] | | [ -z $2 ]; then // | | or 두 가지 하나라도 없으면
echo usage : $0 sourcedir targetidir
else
SRCDIR=$1
DSTDIR=$2
BACKUPFILE=backup.$(date +%y%m%d%H%M%S).tar.gz
if [ -d $DSTDIR ]; then
tar -cvzf $DSTDIR/$BACKUPFILE $SRCDIR
else
mkdir $DSTDIR
tar -cvzf $DSTDIR/$BACKUPFILE $SRCDIR
fi
fi
코드에서
| | 는 or 이라는 뜻으로 두 가지 중 하나라도 없으면 이라는 의미
BACKUPFILE=backup.$(date +%y%m%d%H%M%S).tar.gz 이 문장은 백업할 파일이름을 back~gz 로 하겠다는 뜻
코드를 풀어쓰자면
2개의 인자를 받아서 두 가지 중 하나라도 없으면
$0 쉘이름
sourcedir 압축할 디렉토리명
targetidr 압축된 파일을 넣을 디렉토리명
백업할 파일이름을 back~gz 로 해주는데
date 라는 쉘 명령어를 사용해서 년, 월, 일, 시간, 분, 초 를 알수있게 해준다. (backup.현재시각.tar.gz)
mkdir 디렉토리 생성하는 명령어
tar 압축 명령(확장자) 묶었다.
gz 압축까지 되었다는 의미
tar
압축 명령
tar 주요 옵션
x 묶음을 해체
c 파일을 묶음
v 묶음/해제 과정을 화면에 표시
z gunzip을 사용
f 파일 이름을 지정
압축 시 주로 사용하는 옵션
tar -cvzf [압축된 파일 이름] [압축할 파일이나 폴더명]
압축을 풀 때 주로 사용하는 옵션
tar -xvzf [압축 해제할 압축 아카이브 이름]
2. 로그 파일 정리하기
정책 예시
1. 로그 파일 중에 2일 이상 지난 파일들은 압축을 해서 보관해라
2. 압축된 로그 파일 중에 3일 이상 경과한 것들은 삭제해라
find . -type f -name ‘파일명검색어’ -exec bash -c “명령어1; 명령어2; 명령어3;” \;
// find . 현재 디렉토리
// -type f : 일반 파일 중에
// -type f : 파일 타입 지정해서 검색(f는 일반 파일)
// ‘파일명검색어’ 정규표 형식으로
// 명령어는 쉘 명령어 실행
코드 예제는 다음과 같다.
#!/bin/bash
LOGDIR=/var/log
GZIPDAY=1
DELDAY=2
cd $LOGDIR
echo “cd $LOGDIR”
sudo find . -type f -name ‘*log.?’ -mtime +$GZIPDAY -exec bash -c “gzip {}” \; 2>
sudo find . -type f -name ‘*.gz’ -mtime +$DELDAY -exec bash -c “rm -f {}” \; 2>
Shell Script 문법 정리
Title: Bash Shell Script 문법 정리
Author: DongDongE
Tags: Programming
Release: 2021.02.08
[Shell Script: Shell Script란??]이번 기회에 블로그 포스팅으로 쉘스크립트에 대해 작성해보고자 한다…
맥북, 우분투 서버, NAS 서버 등 에서 ESXI를 자동 백업 스크립트를 작성하여 자동으로 관리 하려고 한다. 그렇게 하기 위해 서로 공통적으로 쉽게 호환되는 쉘 스크립트로 작성할겸 공부도 해볼려고 한다. (파이썬으로 작성 하려고 했으나 호환성 문제가 발생했음.)
무튼, 이번 기회에 쉘 스크립트 공부 내용을 올려본다.
Shell Script란??
Shell Script는 Shell이나 command line 인터프리터에서 구동되도록 작성된 스크립트다.
리눅스와 유닉스에서는 Shell Script라는 단어를 사용하지만, 윈도우에서는 batch(배치파일, .bat)이 사용되며 서로 다른 문법으로 작동된다.
즉, 한마디로 정리를 한다면, 여러 명령어들이 나열된 스크립트 파일이 자동으로 실행 또는 행위를 수행함으로 효율적이면서 간편하게 수행할 수 있다. (대신 그만큼 스크립트 코딩하는 것도 문제다…)
또한 Shell Script가 Interpreter 방식이므로, 한줄 한줄 읽어 실행함으로 다소 속도가 느리다.
Shebang (셔뱅? 쉬뱅? 이란?)
Shebang은 CLI에서 실행시키는 스크립트의 맨 처음 온다. shebang이 있는 스크립트는 프로그램으로 실행되면, 프로그램 로더가 스크립트의 첫 줄의 부분을 인터프리터 지시자로 구문을 분석한다.
#!/bin/bash #!/bin/csh #!/bin/zsh ….
위와 같이 인터프리터의 절대경로는 기입하면 된다.
#!/bin/zsh echo $(which zsh)
1.sh
$ chmod +x 1.sh $ ./1.sh /usr/local/bin/zsh
위와 같이 “1.sh” 쉘 스크립트 파일을 생성하여 chmod 명령으로 모두 실행권한을 할당하여 실행한다. 실행후 zsh의 절대경로를 알 수 있게 된다.
변수 선언
변수의 타입에는 “로컬변수”와 “환경변수(전역)”이 존재한다.
로컬 변수는 말그대로 생성된 쉘에서만 사용이 가능하지만, “환경변수(전역변수)”는 생성된 쉘로 부터 자식으로 생성된 자식 프로세스에게도 접근할 수 있다.
변수는 대,소문자를 구별한다.
변수의 이름은 숫자를 포함할 수 있지만, 숫자로 시작할 수 없다.
변수에는 모든 값을 문자열로 저장된다.
변수에는 자료형을 기입하지 않는다. (Ex. int number, char names[10]), 즉 아무런 값을 다 넣을 수 있다.
값을 사용할 때는 변수명 앞에 특수문자 ” $ “를 사용한다. (Ex. echo ${data})
값을 대입(삽입)할 때는 특수문자 ” $ “를 사용하지 않는다. (Ex. data=mac)
변수를 생성할 때는 “=” 대입문자 앞뒤로 공백이 없어야 한다. (Ex. data=”abcd”)
환경 변수
쉘이 작동되면 기본적으로 셋팅되어있는 변수들이다.
$0 – 실행된 쉘 스크립트 파일명
$# – 스크립트에 전달된 인자의 갯수
$$ – 쉘 스크립트의 PID
#!/bin/bash echo $0 echo $# echo $$
– code.sh –
$ chmod +x code.sh $ ./code.sh ./code.sh 0 54639
– “code.sh” 실행 결과 –
인자 변수
쉘스크립트 작동시 인자로 넘겨주는 정보를 가지고 있는 변수다.
$1, $2, $3, $n… – 념겨진 인자의 값
$* 또는 $@ – 전달된 인자들을 모아놓은 문자열
#!/bin/bash echo “Args 1: $1” echo “Args 2: $2” echo “Args 3: $3” echo “Args List \$@: $@” echo “Args List \$*: $*”
$ ./code.sh aa bb cc Args 1: aa Args 2: bb Args 3: cc Args List $@: aa bb cc Args List $*: aa bb cc
산술 연산
쉘 스크립트의 변수 산술연산은 다른 언어의 비해 쉽지 않다. 위 “변수 선언” 파트 부분에서 나왔듯이 변수의 저장된 값은 문자열로 처리가 되므로 아무리 연산을 하고 싶어도 할 수 가 없다. 하지만 리눅스의 함수를 이용하여 산술 계산을 할 수 있다.
#!/bin/bash number1=10 number2=20 plus=`expr $number1 + $number2` minus=`expr $number1 – $number2` mul=`expr $number1 \* $number2` div=`expr $number1 / $number2` rem=`expr $number1 % $number2` echo “plus: ${plus}” echo “minus: ${minus}” echo “mul: ${mul}” echo “div: ${div}” echo “rem: ${rem}”
– code.sh –
$ ./code.sh aa bb cc plus: 30 minus: -10 mul: 200 div: 0 rem: 10
차례대로 보면, 리눅스 프로그램인 “expr”를 사용하여 연산을 진행한다.
연산자 중 곱셈은 역슬래쉬”\”를 삽입하여 “\*”으로 진행한다.
IF 조건문
흐름상 조건문이 필요할 때 사용된다. 형식은 아래와 같다.
꼭!! 주의해야할 것은, if문 뒤에 나오는 “[“, “]” 사이에는 공백이 존재해야 한다.
if [ 값1 조건식 값2 ]; then 수행 fi
#!/bin/bash num1=10 num2=10 if [ ${num1} -eq ${num2} ]; then echo “변수의 값이 같습니다.” fi
– code.sh –
$ ./code.sh 변수의 값이 같습니다.
위 쉘스크립트 코드의 로직은 변수 “num1″와 “num2″의 값이 같으면 “-eq” 아래 조건문 대로 echo 함수가 작동된다.
이 외에도 조건문 비교 종류는 아래와 같이 존재합니다.
[ -z ${변수A} ] # 변수A의 문자열 길이가 0이면 True [ -n ${변수A} ] # 변수A의 문자열 길이가 0이 아니면 True [ ${변수A} -eq ${변수B} ] # 변수A와 변수B의 값이 같으면 True [ ${변수A} -ne ${변수B} ] # 변수A와 변수B의 값이 다르면 True [ ${변수A} -gt ${변수B} ] # 변수A의 값이 변수B보다 크면 True [ ${변수A} -ge ${변수B} ] # 변수A의 값이 변수B보다 크거나 같으면 True [ ${변수A} -lt ${변수B} ] # 변수A의 값이 변수B보다 작으면 True [ ${변수A} -le ${변수B} ] # 변수A의 값이 변수B보다 작거나 같으면 True [ 조건A -a 조건B ] # 조건식 A와 B모두가 참이면 True (&& 연산자) [ 조건A -o 조건B ] # 조건식 A가 참이거나 조건식 B가 참일 경우 True (|| 연산자) # 아래는 파일 관련 조건문 종류 [ -d ${A} ] # A파일이 디렉터리면 True [ -e ${A} ] # A파일이 존재하면 True [ -L ${A} ] # A파일이 심볼릭 링크로 되어 있으면 True [ -r ${A} ] # A파일이 읽기가 가능하면 True [ -w ${A} ] # A파일이 쓰기가 가능하면 True [ -x ${A} ] # A파일이 실행이 가능하면 True [ -s ${A} ] # A파일의 크기가 0보다 크면 True [ ${A} -nt ${B} ] A파일이 B파일보다 최신파일이면 True [ ${A} -ot ${B} ] A파일이 B파일보다 이전파일이면 True [ ${A} -ef ${B} ] A파일이 B파일이랑 같은 파일이면 True위 조건문의 비교하는 방법을 알아보았지만, 문자로된 조건식은 어려워서 아래의 방법을 추천한다.
if [ ${num1} < ${num2} ]; then echo "yes" else echo "No" fi 프로그램 코딩처럼 기호를 써서 작업하자... 단일 IF문 #!/bin/bash num1="10" num2="11" # 1 if [ ${num1} -lt ${num2} ]; then echo "yes" fi # 2 if [ ${num1} -lt ${num2} ] then echo "yes" fi # 3 - 조건문을 문자 대신 기호로 표현 if (( ${num1} < ${num2} )); then echo "yes" fi # 4 - 한줄로 작성 if [ ${num1} -lt ${num2} ]; then echo "yes"; fi 위와 같이 쉘 스크립트에서 조건문을 작성하는 방법은 여러가지가 있다. 결과와 로직흐름은 서로 같다 bash-3.2$ ./code2.sh yes yes yes yes IF-ELSE문 "if-else" 구문은 해당 조건식에 의해 참 또는 거짓일 경우 각각 로직 흐름을 맞출 수 있다. #!/bin/bash num1="11" num2="10" # 1 if [ ${num1} -lt ${num2} ]; then echo "yes" else echo "no" fi # 2 if [ ${num1} -lt ${num2} ] then echo "yes" else echo "no" fi # 3 - 조건문을 문자 대신 기호로 표현 if (( ${num1} < ${num2} )); then echo "yes" else echo "no" fi # 4 - 한줄로 작성 if [ ${num1} -lt ${num2} ]; then echo "yes"; else echo "no"; fi 위 코드를 살펴보면, 단순히 "if" 흐름도에서 "else"가 추가되어 어떻게 로직을 구현할지 작성만 하면 된다. IF-ELIF문 "if-ELIF" 구문은 여러 IF문이 추가되 각 상황에 맞게 로직 흐름을 수행할 수 있다고 보면된다. #!/bin/bash num1="10" num2="10" # "-lt", A가 B보다 작으면 True # "-eq", A와 B가 서로 같으면 True if [ ${num1} -lt ${num2} ]; then echo "yes" elif [ ${num1} -eq ${num2} ]; then echo "bbb" else echo "no" fi if [ ${num1} -lt ${num2} ] then echo "yes" elif [ ${num1} -eq ${num2} ] then echo "bbb" else echo "no" fi if (( ${num1} < ${num2} )); then echo "yes" elif (( ${num1} == ${num2} )); then echo "bbb" else echo "no" fi if [ ${num1} -lt ${num2} ]; then echo "yes"; elif [ ${num1} -eq ${num2} ]; then echo "bbb"; else echo "no"; fi 반복문 for 반복문은 여러 작업을 수행할 때 사용된다. 주로 "for"문과 "while" 문을 통하여 할 수 있다. #!/bin/bash for <변수> in <범위> do <수행 로직> done
형식은 위와 같다.
#!/bin/bash data=”1 2 3 4″ # 초기값; 조건값; 증가값을 사용한 반복문 for ((i=1; i<=4; i++)); do echo $i done # 변수를 사용한 반복문 for x in $data do echo ${x} done # seq 함수를 사용한 반복문 (1, 2, 3, 4) 범위 나열 for x in $(seq 4) do echo ${x} done # 배열을 사용한 반복문 datas=(1 2 3 4) for x in $datas do echo ${x} done 또한 위 코드와 같이 여러 방법을 통한 반복문을 구현할 수 있다.
Shell Script 기초 문법
출처 : https://wiki.kldp.org/wiki.php/ShellProgrammingTutorial
1. 변수
– 쉘변수는 대소문자를 구분함.
– 쉘변수는 데이터를 문자열로 저장하여, 실제 수치를 대입해도 문자열이 저장, 계산이 필요하면 자동으로 수치를 변환하여 계산후 다시 문자열로 저장.
– 쉘변수의 값을 사용할 때는 변수명 앞에 $를 붙임. //ex echo $Test
– 쉘변수의 값을 대입할 때는 $를 사용하지 않음. // name=aa -> name 변수에 “aa” 값을 대입.
– 쉘변수는 타입이 없다. //c와 비교하여 int, float, char 같은 타입에 구애 받지않고 사용이 가능함.
1.1 환경변수
-쉘을 가동하면 기본적으로 세팅되어있는 변수. 일반변수처럼 값을 얻어오거나 셋팅할 수 있다.
– $0 -> 실행된 쉘 스크립트 이름 //ex) test.sh
– $# -> 스크립트에 넘겨진 인자의 개수 // ./test.sh a1 a2 a3 a4 인자 4개를 줬을 때 $#의 값은 4
– $$ -> 쉘 스크립트의 프로세트 ID
1.2 인자변수
-쉘스크립트에 인자를 넘겨줄때 그 인자들에 대한 정보를 가지고 있는 변수
$1~$nnn -> 넘겨진 인자들
$* -> 스크립트에 전달된 인자들을 모아놓은 문자열, 하나의 변수에 저장되며 IFS 환경변수의 첫번째 문자로 구분
//ex) ./test.sh a1 a2 a3 a4
echo $* -> a1 a2 a3 a4 출력
$@ -> “$*” 과 같으나 IFS 변수의 영향을 받지 않음
//ex) ./test.sh a1 a2 a3 a4
echo $@ -> a1 a2 a3 a4 출력
2.1 연산
– 변수= expr 산술식 //ex) a= expr $a + $b
곱하기 연산은 \*으로 사용
2.2 매개변수 확장
변수의값을 문자열 등으로 대체하는 것을 말한다. 단순한 대체가 아니라 변수내 문자열을 조작하여 원하는 문자열만을 추출이 가능하다.
1 #!/bin/sh
2 3 p=”/usr/X11R6/bin/startx” 4 5 unset p 6 a=${p:-“Variable p Not found”} 7 echo $a 8 9 p=”/usr/X11R6/bin/startx” 10 a=${p:-“Variable parm Not found”} 11 echo $a 12 13 a=${#p} 14 echo $a 15 16 a=${p%/*} 17 echo $a 18 19 a=${p%%/*} 20 echo $a 21 22 a=${p#*/} 23 echo $a 24 25 a=${p##*/} 26 echo $a 27 위 스크립트의 결과는 다음과 같다. Variable p Not found /usr/X11R6/bin/startx 21 /usr/X11R6/bin usr/X11R6/bin/startx startx 6행 : 변수 p 가 제거 되었으므로 “Variable p Not found” 가 a에 들어간다.
10행 : 변수 p 가 있으므로 그대로 a에 들어간다.
13행 : a에는 변수 p의 길이가 들어간다.
16행 : p 에서 가장 오른쪽의 “/”부터 끝까지 지우고 나머지를 a에 넣는다.
19행 : p 에서 가장 왼쪽의 “/” 부터 끝까지 지우고 나머지를 a에 넣는다. (아무것도 없다)
22행 : p 의 처음부터 가장왼쪽의 “/” 까지 지우고 나머지를 a에 넣는다.
25행 : p 의 처음부터 가장 오른쪽의 “/”까지 지우고 나머지를 a에 넣는다. 위 스크립트의 결과는 다음과 같다.
3. 조건문 if
if test -f test1
then
…
fi
test 명령을 [ ] 로 대체가 가능
if [ -f test1 ]
then
…
fi
or
if [ -f test1 ]; then
…
fi
So you have finished reading the 쉘 스크립트 문법 topic article, if you find this article useful, please share it. Thank you very much. See more: 쉘스크립트 짜기, 쉘 스크립트 if, 쉘 스크립트, 쉘 스크립트 활용 사례, 쉘 스크립트 명령어 실행, 쉘 스크립트 의미, 쉘 스크립트 1, 쉘 스크립트 테스트