티스토리 뷰

shell이란?(조개 아님)

 

Bash란?

 

별도의 컴파일 필요 X

 

 

첫 줄 #!/bin/bash ?

필수이다!!

 

타입

Unix 및 Linux OS에서 제공하는 Shell은 기본적으로 변수에 대한 Type을 정의하지 않는다.

이런 변수할당 유형을 약타입(Weakly Typed) 이라고 표현한다.

 

반면에 C언어나 Go Lang 등은 변수의 선언시 Type을 미리 정의해 줘야하는 강타입(Strong Typed) 언어이다.

 

무튼간에, Shell 과 같은 약타입 언어들은 변수의 타입을 미리정의 할 필요없이 사용자가 필요에 따라 유연하게 정의해서 사용할 수 있는 장점이 있는 반면,

 

변수에 대입 될 실 데이터에 대한 타입 문제로 인해 의도치 않은 Script 오류를 겪게되는 단점도 있다.

 

때문에  Shell Script 를 통해 Logic 을 구현할 때는 반드시 아래 예시와 같이, 사용중인 변수에 대입된 값이 Null 인지 Not Null 인지, 또 정수(Integer), 실수(Float), 문자열(String) 등인지 구분하는 Logic을 구현해 줘야, 예기치 않은 오류를 미리 방지 할 수 있다.



출처: https://blog.helperchoi.com/186 [blog.helperchoi.com]

 

변수 선언하기

'=' 양옆에 띄워쓰기 금지!

 

숫자 계산하기
expr 과 연산 기호 사이에 뺄셈 필수!!

덧셈  - a + b 처럼 띄우지 않고, a+b로 쓰면 안된다. 

`expr $num1 + 200`

곱셈 - * 앞에 backslash 필수!!

`expr $i \* $j`

파라미터 처리하기

sh sweetdev.sh 1 2

$0 = sweetdev

$1 = 1

$2 = 2

파라미터 개수가 맞지 않을 때

if [ $# -ne 2 ]; then
 echo "Usage: $0 param1 param2"
 exit -1
else
 echo "ok" 
fi

 

비교 연산자

-eq

=

-ne

!=

-gt

-ge

-lt

-le

 

-n

-z

 

if문

case문

 

반복문

for문 

for i in $(seq 1 $1)
do
  for j in $(seq 1 $2)
    do
      echo $i*$j = `expr $i \* $j`
    done
done
exit 0

 

while문

until문

 

함수 선언하기

프린트하기

printf

조건문에서 쓰이는 연산자들

파일 관련 연산자들

 

 

실행하기

1) sh sweetdev.sh

2) ./로 실행하기

chmod +x sweetdev.sh : 파일 속성을 'executable'로 바꿔준다. 

./sweetdev.sh : 실행!

 

자주 쓰이는 환경변수들 

HOME

TERM

USER

PS1

BASH

HISTFILE

HOSTNAME
PATH

SHELL

PWD

LINES

PS2

BASH_VERSION

HISTSIZE

USERNAME

USER

 

나의 귀여운 코드

#!/bin/bash

# 변수 개수 확인
if [ $# -ne 2 ]; then
 echo "Error! Usage: $0 param1 param2"
 exit -1
fi
echo $1
echo $2

zero=0

# 정수이고 유효 범위인지 확인
if [[ "$1" = *[a-zA-Z]* ]] || [[ "$2" = *[a-zA-Z]* ]] || [[ "$1" = *.* ]] || [[ "$2" = *.* ]] || [[ $zero -ge $1 ]] || [[ $zero -ge $2 ]]; then 
  echo "Error! Usage: $0 param1(Positive Int) param2(Positive Int)"
  exit -1
fi


for i in $(seq 1 $1)
do
  for j in $(seq 1 $2)
    do
      printf "$i*$j = `expr $i \* $j`" 
      if [ `expr $j % $2` == 0 ]
      then
        printf "\n"
      else
        printf " "
      fi
    done
done
exit 0
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함