Linux/Shell Script 21

[Shell] 변수 기본값 설정

개요 쉘 스크립트에서 변수를 초기화화하면 환경변수 등으로 설정된 값을 사용하거나 그렇지 않은 경우가 존재할 수 있다. 때문에 쉡 스크립트에서 변수를 초기화할 때 기본값을 설정하는 방법을 제공해주고 있다. 이 글에서는 변수 선언 시 기본값을 설정하는 방법에 대해 적어둔다. 변수의 상태 쉘 스크립트에서 변수의 상태는 크게 세 가지로 구분할 수 있다. 선언된 변수 값이 NULL이 아닌 변수 값이 NULL인 변수 선언되지 않은 변수 쉘 스크립트는 변수의 상태와 사용한 확장자에 따라 기본값으로 초기화되는 조건이 달라질 수 있다. - / = 참조하는 변수가 선언되지 않은 경우에는 -, :, = 등의 확장자를 사용하여 변수의 기본값을 초기화한다. 확장자 설명 ${VAR-value} VAR이 선언되지 않은 경우, va..

Linux/Shell Script 2024.03.07

[Shell Script] 데이터 타입과 Test 명령

Shell 데이터 타입과 test 명령 Shell에는 숫자와 문자를 구분하는 데이터 타입이 없고, 사칙연산을 위한 연산자도 없다. 명령문을 구성하는 모든 것은 문자열이고, 산술 연산은 확장이나 명령을 통해 제공된다. 즉, 32와 "32"는 동일하다. 또한 문자열을 다루는 부분에서는 문자열로, 산술 연산을 다루는 부분에서는 숫자로 사용된다. test 명령은 shell Script 작성 시 빠지지 않고 등장하는 표현식으로 보통 조건문에 많이 사용한다. test와 [는 같은 명령이다. test -d /etc; echo $? [ -d /etc ]; echo $? Shell에서 test 명령을 사용할 때는 다음과 같은 점을 주의해야 한다. test 명령 사용 시 주의점 1. 변수 비교 시 qoute 처리 필요 t..

Linux/Shell Script 2023.10.11

[Shell Script] Login Shell VS Non-Login Shell

개요 2023.09.13 - [Shell Script] 대화형 VS 비대화형 쉘에서 쉘의 종류를 대화형과 비대화형으로 구분해 봤는데, 이 글에서는 관점을 달리하여 Login Shell과 Non-Login Shell로 쉘의 실행 환경을 구분해 본다. Login Shell Login Shell은 원격 서버에 SSH나 Telnet으로 접속해 login 과정을 거쳐 사용하는 환경이다. 프롬프트 상에서 아래 명령을 실행했을 때, 첫 문자가 '-'이면 로그인 쉘임을 나타낸다. echo $0 또는 아래 명령을 통해 알아볼 수 있다. shopt -q login_shell; echo $? # -q : 나열된 옵션이 모두 활성화되어 있으면 0을 반환한다. Login Shell을 시작할 때는 아래의 파일을 순서대로 읽어 들..

Linux/Shell Script 2023.09.14

[Shell Script] 대화형 VS 비대화형 쉘

쉘 실행 환경 Shell이 실행되는 환경은 크게 두 가지로 구분할 수 있다. 대화형 (Interactive) : 프롬포트를 통해 사용자로부터 직접 명령을 입력받아 실행한다. 비대화형 (Non-Interactive) : 스크립트 파일 등을 실행한다. history, alias, job control과 같은 기능은 기본적으로 대화형 쉘에서 사용하기 위한 기능이므로 비대화형 쉘에서는 비활성화된다. 쉘 실행 환경 확인 아래 명령을 통해 실행 중인 쉘이 대화형인지, 비대화형인지 확인할 수 있다. case $- in *i*) echo interactive shell ;; *) echo non-interactive shell ;; esac set 명령에 의해 설정된 option flags를 저장하고 있는 $- 변수의..

Linux/Shell Script 2023.09.13

[Shell Script] 스크립트 실행 방법

개요 쉘 스크립트를 실행하는 방법에는 여러 가지가 있는데 이 글에서는 각 방법에 대해 간단히 적어둔다. 실행 권한 부여 후 실행 작성한 스크립트 파일에 실행 권한을 부여하여 실행한다. 참고 : 2021.06.08 - chmod - 파일 권한 설정 # 실행 권한 부여 chmod 775 /path/script.sh ## 또는 chmod +x /path/script.sh # 스크립트 실행 /path/script.sh bash/sh 명령으로 실행 python 명령어에 실행할 코드를 지정하여 python 프로그램을 실행할 수 있는 것처럼 python /path/code/python.py 쉘 스크립트도 bash 또는 sh 명령으로 실행할 수 있다. 이때 스크립트를 호출하는 것과 달리 실행 권한이 없어도 된다. ba..

Linux/Shell Script 2023.08.31

[Shell Script] #! - Shebang

#! shebang, sharpbang, shabang, hashbang 등으로 칭해지는 문자로, 스크립트 파일의 첫 줄에 사용하여 스크립트가 어떤 명령으로 실행될지를 지정한다. 명령어의 경로는 절대 경로 또는 현재 디렉터리로부터의 상대 경로로 지정할 수 있다. 변수는 사용할 수 없고, 사용할 수 있는 옵션은 하나로 제한된다. 예시 #! /bin/bash # bash 스크립트 실행을 위한 shebang line ... #! /bin/sed -f # sed 스크립트 실행을 위한 shebang line ... #! /usr/bin/awk -f # awk 스크립트 실행을 위한 shebang line ... #! /usr/bin/perl # perl 스크립트 실행을 위한 shebang line ... #! /u..

Linux/Shell Script 2022.09.24

[read] 사용자 입력 / 파일 입력

read 파일 디스크립터에서 값을 읽는 명령어다. 사용자로부터 값을 입력받아 변수에 저장하거나, 파일의 내용을 입력받을 때 사용한다. 사용자 입력 read 명령어로 사용자의 키보드 입력을 변수에 저장하여 사용한다. #! /bin/bash echo "name: " read NAME echo "Your name is" $NAME 파일 입력 파일 디스크립터를 이용하여 파일의 한 행을 변수에 저장한다. #! /bin/bash # 내용을 읽을 파일 FILE=user.sh # 파일 디스크립터로 입력 읽기 read line < $FILE echo $line 파일 내용 전체를 읽을 때는 while 문을 사용할 수 있다. #! /bin/bash FILE=user.sh while read line do echo $line..

Linux/Shell Script 2022.09.19

[Shell Script] Pattern Matching

Pattern Matching *, ?, [ ]와 같은 glob 문자를 이용한 패턴 매칭은 파일명 매칭, case 문, 매개변수 확장 등과 같이 쉘 스크립트 전반에서 사용할 수 있다. Glob 문자 문자 의미 * empty를 포함해 모든 문자와 매칭된다. ? 임의의 문자 하나와 매칭된다. […] Bracket 표현식 내 하나의 문자와 매칭된다. Bracket 표현식 표현식 의미 [XYZ] X or Y or Z 문자에 대해 매칭된다. [X-Z] X부터 Z까지의 문자를 -로 표현할 수 있다. [[:class:]] POSIX character class와 매칭된다. [^…] ^문자는 NOT을 의미한다. 괄호 내 문자 이외의 문자와 매칭된다. [!…] ! 문자는 NOT을 의미한다. 괄호 내 문자 이외의 문자와 ..

Linux/Shell Script 2022.07.16

[Shell Script] Exit Status - 2

Exit Status 2022.07.05 - [Shell Script] Exit Status - 1 에 이어서 작성한다. pipe로 연결된 명령의 종료 상태 값 pipe로 여러 명령이 연결되어 실행될 때는 마지막 명령의 종료 상태 값이 사용된다. 아래 명령문의 경우 command1의 성공 여부와 상관없이 sed는 항상 참을 반환하기 때문에, 항상 종료 상태 값으로 0을 반환한다. command1 arg1 arg2 | sed -n '/:/,/^$/p' command1 명령 실패 시 비정상 종료 상태 값을 반환하려면, 파이프에 연결된 명령 중 하나라도 오류가 생길 경우 비정상 종료 상태 값을 반환하는 pipefail 옵션을 사용해야 한다. sh에서는 pipefail을 사용할 수 없으므로, 명령을 분리하거나 ..

Linux/Shell Script 2022.07.06

[Shell Script] Exit Status - 1

Exit Status 종료 상태 값은 명령이 정상적으로 실행을 완료했는지 아니면 오류가 발생했는지 판단할 수 있도록 한다. Shell에서 실행되는 모든 명령은 종료 상태 값을 반환하며 if, while, until, &&, ||은 종료 상태 값을 이용해서 참, 거짓을 판단한다. 명령이 정상적으로 종료된 경우, 0을 반환하고 그 이외의 값은 오류를 분류하는 용도로 사용된다. 명령의 종료 상태 값은 $? 변수로 알 수 있다. 앞선 명령이 정상 종료되어야 할 경우 앞서 실행된 명령에 오류가 발생했을 때 뒤의 명령이 실행되면 안 되는 경우, && 연산자를 이용해 명령을 연결하거나 test 명령을 이용하여 종료 상태를 확인한다. # && command1 ... && command2 # test command1 ...

Linux/Shell Script 2022.07.05
1 2 3