SH 20

[Shell Script] Functions - 2

Functions 2022.07.02 - [Shell Script] Functions - 1에 이어서 마저 작성한다. 함수 정의 방법 함수를 nesting 해서 작성 함수 안에 함수를 작성할 수 있다. shell에서 함수는 모두 전역 함수가 되지만, nesting 함수는 외부 함수가 실행되기 전에는 정의된 상태가 아니기 때문에 실행하기 위해서는 외부 함수가 먼저 실행되어야 한다. 함수에서 연산 결과를 리턴하는 방법 프로그래밍 언어와 다르게 shell에서 return문은 연산 결과를 반환하는 데 사용하지 않고, exit과 같이 함수 종료 상태를 지정하는 용도로 사용된다. shell에서 함수는 일반 명령과 동일하게 사용되므로, 실행 결과도 외부 명령을 사용한 것처럼 받는다. 함수에 인수를 전달하기 외부 명령..

Linux/Shell Script 2022.07.03

[Shell Script] Functions - 1

Functions { ;}, ()를 이용해 명령 그룹을 만들면 같은 context에서 실행되어 명령 그룹 전체가 하나의 명령처럼 실행되는 것과 같은 화가를 가진다. 따라서 명령 그룹에 이름을 붙임으로써 함수를 정의하면 일반 명령과 동일하게 사용할 수 있다. { ;}는 현재 shell에서, ()은 subshell에서 실행되므로 보통 { ;}를 사용하여 함수를 정의한다. # 파이프로 인해 subshell에서 실행되어 echo $var는 값이 표시되지 않는다. echo hello world | read var; echo "$var" # 명령 그룹을 만들면 read, echo 명령이 같은 context에서 실행되어 값이 표시된다. echo hello world | { read var; echo "$var" ;}..

Linux/Shell Script 2022.07.02

[Shell Script] Variables - 2

Variables 2022.06.27 - [Shell Script] Variables - 1 글에 이어서 작성한다. Variable states 변수는 3가지 상태를 가질 수 있다. 1. 변수 없음 또는 unset 변수에 값을 대입한 적이 없는 상태로 아래 명령어로 선언만 했거나 unset 명령을 사용한 경우에 해당된다. declare local 2. 값이 NULL인 경우 = ="" ='' 3. 값이 NULL 이외인 경우 =123 =" " ='hello, world' 값 구분하기 조건문 if를 사용하면 값을 가진 상태와 가지지 않은 상태를 구분할 수 있다. 값이 없는 경우 test -v ; echo $?; 💡 test 명령 파일 형식 또는 값을 비교한다. 값이 없거나 NULL인 경우 test -z ; e..

Linux/Shell Script 2022.06.28

[Shell Script] Variables - 1

Variables 변수명은 알파벳, 숫자, _로 구성되며, 숫자는 맨 처음에 올 수 없다. 변수 이름을 대문자로 사용할 때는 환경 변수와 중복되지 않도록 주의해야 하며, 자식 프로세스에서도 생성한 변수를 사용할 때는 export해야 한다. 현재 Shell에 정의된 모든 변수 확인 compgen -A variable 또는 $ 를 입력하고 tab을 입력하여 변수 목록을 확인할 수도 있다. 정의된 변수 삭제 unset -v # 예시 unset -v num 특징 같은 줄에 여러 변수를 생성할 수 있다. ;로 구분하지 않아도 된다. 단 local, declare, export 명령을 사용하는 경우에는 적용되지 않는다. foo=100 bar=$foo zoo=$bar echo $foo $bar $zoo 변수명으로 명..

Linux/Shell Script 2022.06.27

[Shell Script] Quotes - 2

2022.06.04 - [Shell Script] Quotes - 1에 이어서 작성한다. Single quotes ' ' 모든 문자를 그대로 표시하며 escape도 되지 않는다. 따옴표로 감싼 문자열 내에서 따옴표를 입력할 때는 아래와 같은 방법으로 입력한다. no quotes 상태에서 ' escape '를 쌍따옴표로 감싸기 echo 'test'\''test' echo 'test'"'"'test' Single quotes 사용이 필요한 경우 1. Command String 사용 시 큰따옴표를 사용하면 작성 당시 변숫값이 확장되어 정의되므로 실행 시 의도대로 동작하지 않을 수 있다. 2. Trap Handler 사용 시 3. Prompt 설정 $' ' escape를 사용할 수 있는 single quotes..

Linux/Shell Script 2022.06.07

[Shell Script] Quotes - 1

Quotes 다른 프로그래밍 언어와 달리 숫자나 스트링 값을 구분하기 위한 용도로 사용하지 않는다. quotes의 용도는 아래와 같다. 공백으로 분리되는 여러 개의 스트링을 하나의 인수로 만들 때 라인 개행이나 둘 이상의 공백을 유지할 때 단어 분리, globbing 발생을 방지하기 위해 키워드, 메타 문자, 특수 기능을 하는 문자나 단어를 단순 문자열로 만들기 위해 문자열을 강조하기 위해 특수 기능을 하는 문자 shell 메타 문자 문자 기능 $ 매개변수 확장, 산술 확장, 명령 치환 ` 명령 확장 ! history 확장 shell 메타 문자를 포함하는 문자열을 사용할 때 의도치 않은 동작을 수행할 수 있기 때문에 \ 또는 quotes를 이용해 특수 기능을 제거해야 한다. No quotes 따옴표 또는..

Linux/Shell Script 2022.06.04

[Shell Script] Basics - 1

https://mug896.github.io/bash-shell/basics.html의 내용을 간단히 정리한다. Basics | Introduction Shell basics Shell 의 기본적인 역할은 사용자에게 명령을 입력받아 실행하는 것입니다. shell 은 명령문을 작성할 때 사용할 수 있도록 많은 유용한 기능을 제공하므로 실제 명령이 실행되기 전에 she mug896.github.io Shell의 기본 역할 사용자에게 명령을 입력받아 실행한다. 사용자는 명령어 작성 시 사용할 수 있는 기능을 사용하여 명령을 작성하기 때문에, 실제 실행 전에 shell에 의해 해석 단계를 거친다. 명령어 작성 시 사용할 수 있는 기능 파일명 명령 실행 시 사용되는 이름과 같다. 리눅스에서 사용하고 있는 파일 시..

Linux/Shell Script 2022.05.14

[Shell Script] 반복문

매번 구글링 해서 찾기 때문에 적어둔다. FOR 문 1. 리스트 내 요소에 대해 반복적으로 작업을 실행한다. for var in val1 val2 val3 do # CMD done var는 변수 이름이며, 값은 공백을 구분된다. foreach 문과 유사하다고 생각하면 된다. 예시) #! /bin/bash for var in 1 2 3 4 5 do echo $var done 2. 리스트가 숫자인 경우에는 중괄호를 이용하여 시작 값과 종료 값을 지정할 수 있다. # start값부터 end값까지 반복. 1 씩 증가. for var in {start..end} do # CMD done # start값부터 end값까지 반복. gap값 씩 증가. for var in {start..end..gap} do # CMD ..

Linux/Shell Script 2021.09.12

[Shell Script] 조건문

매번 구글링 해서 찾기 때문에 적어둔다. IF문 if [ 값1 조건식 값2 ] then 실행문 fi if [ 값1 조건식 값2 ] ; then 실행문 fi # 예시 if [ ${PATH} == "/" ] # == 은 문자열 비교 시 사용 then size=$(df -m | grep ${PATH} | awk '{ print $3 }') fi if [ ${PATH} == "/" ] ; then size=$(df -m | grep ${PATH} | awk '{ print $3 }') fi 대괄호와 값 사이에는 공백이 존재해야 한다. 변수를 참조할 때는 중괄호로 변수명을 감싸는 습관을 들이는 것이 좋다. if문은 fi로 끝낸다. IF-ELSE 문 if [ 값1 조건식 값2 ]; then 실행문 else 실행문 ..

Linux/Shell Script 2021.08.17

Python 코드 실행 스크립트 작성

작성할 스크립트 내용 python 코드 실행 실제 코드 #!/bin/bash /usr/bin/python3 ~/send-message-slack.py 맨 첫 줄의 #!/bin/bash는 bash shell을 이용해 스크립트를 실행하겠다는 의미이다. 두 번째 줄은 사용자의 홈 디렉터리에 위치한 send-message-slack.py를 python 3으로 실행한다는 의미이다. 스크립트 실행 및 결과 # run-send-message-slack.sh 실행 권한 부여 chmod +x run-send-message-slack.sh # run-send-message-slack.sh 실행 cd ~ ./run-send-message-slack.sh

1 2