Conditional Construct
Computer Science/OpenSource+Git

Conditional Construct

# Test command

: expression이 true인지 false인지 확인할 때 사용한다. - true면 0, 나머지는 전부 false이다.

#두 개가 동일한 의미를 갖는다.
test expression
[expression]

var=5
test $var -gt 0 #(var>0)
echo $?
0

test $var -lt 0
echo $?
1

[$var -gt 0]
echo $?
1

 

#Integer Test

여러가지 비교연산자를 조합해서 사용할 수 있다.

#File test

test -e filename #file이 존재하는지 확인
test -d filename #directory가 존재하는지 확인
test -f filename $regular file이(directory가 아닌 파일) 존재하는지 확인

 

#String Test

[-z var1]
[var1 = "korea"]

#Compound Commands

: 각 구조들은 reserved word로 시작하며, 이에 대응하는 reserved word로 끝난다.

- compgen -k로 keyword를 확인할 수 있으며, 조건문 형식에선 if가 fi에 대응되는 것을 확인할 수 있다.

 

#If Statements

#Single-line Syntax

if command; then command; fi
if command; then command; else command; fi

#Multi-line Syntax
if commands
then commands
else commands
fi

if commands
then commands
elif commands
then commands
else commands
fi
 
#-------------------------------------------------------------------------------------- 
if ls 2&>1 /dev/null; then echo yes; fi
#yes라고 출력되면 잘 소각된것임.

if false;then echo true; else echo false; fi

if test -n "kor"; then echo true; else echo false; fi

if [ -n "kor"]; then echo true; else echo false; fi

#test구문에 상당히 많이 쓰인다.

 

#Integer Testing

#! /bin/bash

if [$# -lt 2]
then	
    echo "usage: $0 file1 file2"
    exit 1
fi
echo "program start"
exit 0

 

 

 

 

 

-> 빈칸에는

[$1 -gt 0] 이 들어가야 함을 알 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 : $op = "add"  , $op = "sub" 순으로 들어감을 확인할 수 있다.

 

1) 만약 parameter의 숫자가 1개가 아니면 처음 구문을 실행한다.

2) parameter가 한개고, 이게 file이면 $file is a file이라고 출력하며, $file이 directory라면 directory라고 출력한다.

 

: .bashrc가 존재하면 파일을 찾는 것이고, 없으면 $Home/bin을 path에 추가한다.

-> Home/bin에는 리눅스의 가장 필수적인 실행파일들을 모아두고 있다.

 

 

#Case Statement

- 다중 선택에 기초한 case statement가 존재한다.

1) 각 pattern은 ) 로 끝난다.

2) 각 block은 ;; 로 끝난다.

3) 모든 case block은 "esac"으로 끝이 난다.

case word in
pattern )
commands ;;
pattern )
commands ;;
esac


read -p "Enter the name of an animal:" Animal
echo -n "the $Animal has.."
case $Animal in
horse)
echo -n 4 ;;
kangaroo)
echo -n 2 ;;
*) #defualt의미
echo -n "an unkwown number of" ;;
esac
echo "legs"

 

EX1)

-> filename이 각각의 wildcard와 매칭된다면 어떤 파일인지 출력한다.

: 각각의 pattern은 wildcard를 포함할 수 있고, multiple pattern은 |로 리스팅 될 수 있다.

 

EX2)

: hidden filed이 있다면 ls -a 옵션으로 출력하고, 그냥 출력하고 싶으면 N을 입력하여 ls 로 출력한다.

'Computer Science > OpenSource+Git' 카테고리의 다른 글

Pipe and Shell Scripts  (0) 2021.12.11
Linux Command and Redirection  (0) 2021.12.11
shell command 확장과 명령어 치환  (0) 2021.12.11
Shell Environment  (0) 2021.12.11
Git Branch Command  (0) 2021.10.24