Shell(쉘)/Shell(쉘)
[Shell(쉘)] Shell script 명령어 기본 문법 (쉘 스크립트) (MAIN)
2022. 9. 14. 21:54반응형
변수 선언
(1) 내부 변수
변수 할당 시, 변수=값 이런식으로 변수에 할당해야한다.
이런식으로 정의 시 변수=값 사이에 space가 있으면 안된다.
#!/bin/bash
h="Hello"
b="world"
echo "${h},${b}"
출력화면: Hello,world
(2) 외부 변수
export 키워드를 사용하여, 외부변수를 선언할 수 있다.
외부 변수는 다른 프로그램에서도 사용 가능하다. 즉, 다른 스크립트에서 사용할 수 있다.
쉽게말해 전역변수라고 생각하면 좋다.
터미널에서 아래와 같이 TE 변수를 export로 선언해보자
export TE="123"
test.sh
#!/bin/bash
echo $TE
./test.sh 로 실행하자.
출력하면
123 |
(3) 매개변수 활용
test.sh
#!/bin/bash
echo "script name:${0}"
echo "매개변수 갯수 :${#}"
echo "전체 매개변수 값 : ${*}"
echo "전체 매개변수 값2 : ${@}"
echo "매개변수 1 : ${1}"
echo "매개변수 2 : ${2}"
$0 : 현재 쉘 스크립트의 이름
$# : 위치 매개변수의 총 개수
$* : 모든 위치 매개변수
$@ : 큰 따옴표를 사용하였을 때를 제외하고는 $*와 동일한 의미
$1 ... ${10} : 사용가능한 위치 매개변수
출력화면:
매개변수 갯수 :2 전체 매개변수 값 : aaa bbb 전체 매개변수 값2 : aaa bbb 매개변수1:aaa 매개변수2:bbb |
조건 표현식
조건식 작성 시, if^[^조건식^] 이렇게 space를 넣어야 하낟.
명령어 실행 후 변수에 값을 넣고 싶으면,
변수=`command` 형태로 해당 command의 결과값을 변수에 저장할 수 있다.
※ 주의 `(backtick 기호)를 써야한다.
if문에 사용 되는 조건식
[ -z ] : 문자열의 길이가 0이면 참 [ -n ] : 문자열의 길이가 0이 아니면 참 [ -eq ] : 값이 같으면 참 [ -ne ] : 값이 다르면 참 [ -gt ] : 값1 > 값2 [ -ge ] : 값1 >= 값2 [ -lt ] : 값1 < 값2 [ -le ] : 값1 <= 값2 [ -a ] : &&연산과 동일 and 연산 [ -o ] : ||연산과 동일 xor 연산 [ -d ] : 파일이 디렉토리면 참 [ -e ] : 파일이 있으면 참 [ -L ] : 파일이 심볼릭 링크면 참 [ -r ] : 파일이 읽기 가능하면 참 [ -s ] : 파일의 크기가 0 보다 크면 참 [ -w ] : 파일이 쓰기 가능하면 참 [ -x ] : 파일이 실행 가능하면 참 [ 파일1 -nt 파일2 ] : 파일1이 파일2보다 최신파일이면 참 [ 파일1 -ot 파일2 ] : 파일1이 파일2보다 이전파일이면 참 [ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참 |
사용 예
비교식
[ -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이면 TRUE (&& 와 동일)
[ 조건식A -o 조건식B ] : 조건식 A가 TRUE거나 조건식B가 TRUE면 TRUE (|| 와 동일)
파일관련
[ -d ${A} ] : A 파일이 디렉토리면 TRUE
[ -e ${A} ] : A 파일이(노드, 디렉토리, 소켓 등등 모두) 존재하면 TRUE
[ -L ${A} ] : A 파일이 심볼릭 링크면 TRUE
[ -r ${A} ] : A 파일이 읽기 가능하면 TRUE
[ -s ${A} ] : A 파일의 크기가 0 보다 크면 TRUE
[ -w ${A} ] : A 파일이 쓰기 가능하면 TRUE
[ -x ${A} ] : A 파일이 실행 가능하면 TRUE
[ -c ${A} ] : A 파일이 Special character file 이면 TRUE
[ -f ${A} ] : A 파일이 디렉토리가 아닌 일반 regular 파일이면 TRUE
[ -S ${A} ] : A 파일이 소켓이면 TRUE
[ ${A} -nt ${B} ] : A 파일 B 파일보다 최신파일이면 참
[ ${A} -ot ${B} ] : A 파일이 B 파일보다 이전파일이면 참
[ ${A} -ef ${B} ] : A 파일과 B 파일이 같은 파일이면 참
조건문
기본문법)
# 기본 예1)
if [ 조건식 ] ; then
실행문
fi
# 기본 예2)
if [ 조건식 ] ; then
실행문
else
실행문
fi
# 기본 예3)
if [ 조건식 ] ; then
실행문
elif [ 조건식 ] ; then
실행문
fi
# 이중 괄호로 조건식을 묶으면 산술 연산자(>,< 등)를 사용할 수 있습니다.
if (( 조건식 )); then
명령어
elif (( 조건식 )); then
명령어
else
명령어
fi
출처: https://young-cow.tistory.com/33 [어린소:티스토리]
활용예)
a = 1
if [ ${a} == "1" ] ; then
echo "copy it."
else
echo "Skip to copy it."
fi
예제: ` (억음 부호, backtick) 활용 (출력값을 저장하게 된다.)
#!/bin/bash
printvar=`echo "hello world"`
echo ${printvar}
출력화면:
hello world
예제: 작은 따음표 활용 (문자열로 취급이 된다.)
#!/bin/bash
printvar='echo "hello world"'
echo ${printvar}
출력화면:
echo "hello world"
반복문
예제 1: 1만번 쉘명령어 실행
#!/bin/bash
for var in {1..10000}
do
./ssl_client2 server_addr=192.168.183.1 server_port=5060 force_version=tls12
done
예제 2: 10번 반복하여 echo 출력
#!/bin/bash
for var in {1..10}
do
echo ${var};
done
출력화면:
./iterator.sh 1 2 3 4 5 6 7 8 9 10 |
반응형
'Shell(쉘) > Shell(쉘)' 카테고리의 다른 글
[Shell(쉘)] screen 명령어 예제 / 상황별 쓰임 (0) | 2023.02.22 |
---|---|
[Shell(쉘)] cut 명령어 예제 (0) | 2023.02.22 |
[Shell] 특정 인터페이스 mtu값 변경하기 (0) | 2021.10.27 |
[Shell] Shell (쉘, 셸) 이란 무엇일까? 리눅스 쉘 (작성중) (0) | 2021.09.25 |