티스토리 뷰
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
'OS > Linux' 카테고리의 다른 글
[Linux] VMWare Ubuntu 디스크 공간 확장하기 (0) | 2021.10.12 |
---|---|
[Linux] 커널 빌드 해보기 (0) | 2021.10.11 |
[Linux][WIP] 심볼릭링크란? (0) | 2021.09.23 |
[Linux] VMWare Fusion Linux에서 와이파이 연결하기 (0) | 2021.09.20 |
[Linux] Tmux 사용하기 (2) | 2021.09.20 |