■ 파라미터 변수(=: 형식매개변수
- 파라미터 변수 : $0(실행 파일), $1(첫 번째 파라미터 값), $2(두 번째 파라미터 값) 형태로 생성한다.
- 전체 파라미터 : $* 으로 표현한다.
[user1@centos ~]$ vi p.sh
--------------------------------------------------
<실행 코드>
#1/bin/bash
echo "실행 파일 이름은 $0 입니다." => 현 파일명
echo "첫번째 파라미터 값은 $1 입니다."
echo "첫번째 파라미터 값은 $2 입니다."
echo "전체 파라미터 값은 $* 입니다."
--------------------------------------------------
[user1@centos ~]$ sh p.sh 10 20 (=:실제매개변수)
실행 파일 이름은 p.sh 입니다.
첫번째 파라미터 값은 10 입니다.
첫번째 파라미터 값은 20 입니다.
전체 파라미터 값은 10 20 입니다.
[user1@centos ~]$ sh p.sh $x+$y $x-$y -> 문자로 인식해서 계산X
실행 파일 이름은 p.sh 입니다.
첫번째 파라미터 값은 10+3 입니다.
첫번째 파라미터 값은 10-3 입니다.
전체 파라미터 값은 10+3 10-3 입니다.
■ if문
# 주의) [ 조건 ] 공백처리!!
if [ 조건 ]; then
실행문
elif [ 조건 ]; then
실행문
else
실행문
fi
# if 조건문에 비교연산자
1. 문자열 비교연산자
1) "문자열1" = "문자열2" : 두 문자열이 같으면 true
2) "문자열1" != "문자열2" : 두 문자열이 같지 않으면 true
2. 숫자 비교연산자
1) 숫자1 -eq 숫자2 : 두 숫자가 같으면 true
2) 숫자1 -ne 숫자2 : 두 숫자가 같지 않으면 true
3) 숫자1 -gt 숫자2 : 숫자1 > 숫자2 => true
(숫자1이 숫자2보다 크면 true)
4) 숫자1 -ge 숫자2 : 숫자1 >= 숫자2 => true
(숫자1이 숫자2보다 크거나 같으면 true)
5) 숫자1 -lt 숫자2 : 숫자1 < 숫자2 => true
(숫자1이 숫자2보다 작으면 true)
6) 숫자1 -le 숫자2 : 숫자1 <= 숫자2 => true
(숫자1이 숫자2보다 작거나 같으면 true)
7) !숫자1 : 숫자1 false => true
vi comm_1.sh
--------------------------------------------------
#!/bin/bash
if [ "oracle" = "oracle" ]; then
echo "oracle enginner"
else
echo "db enginner"
fi
--------------------------------------------------
[user1@centos ~]$ sh comm_1.sh
oracle enginner
[user1@centos ~]$ vi comm_2.sh
--------------------------------------------------
#!/bin/bash
if [ "oracle" != "python" ]; then
echo "python progarmmer"
else
echo "db enginner"
fi
--------------------------------------------------
[user1@centos ~]$ . comm_2.sh
python progarmmer
[user1@centos ~]$ vi comm_3.sh
--------------------------------------------------
#!/bin/bash
echo -n "숫자를 입력해주세요 : "
read num
if [ $num -gt 0 ]; then
echo "$num is positive"
elif [ $num -lt 0 ]; then
echo "$num is negative"
else
echo "$num is zero"
fi
--------------------------------------------------
[user1@centos ~]$ vi comm_3.sh
[user1@centos ~]$ . comm_3.sh
숫자를 입력해주세요 : 10
10 is positive
[user1@centos ~]$ . comm_3.sh
숫자를 입력해주세요 : -2
-2 is negative
[user1@centos ~]$ . comm_3.sh
숫자를 입력해주세요 : 0
0 is zero
# 논리 연산자
1. and : && 또는 -a
2. or : || 또는 -o
[user1@centos ~]$ echo $UID
1000
[user1@centos ~]$ id
uid=1000(user1) gid=1000(user1) groups=1000(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@centos ~]$ id -u => 유저아이디값
1000
[user1@centos ~]$ id -g => 그룹아이디값
1000
[user1@centos ~]$ id -n
id: cannot print only names or real IDs in default format
[user1@centos ~]$ id -un => 유저아이디명
user1
[user1@centos ~]$ id -gn => 그룹아이디명
user1
[user1@centos ~]$ vi um.sh
--------------------------------------------------
#!/bin/bash
환경변수 실행명령어
if [ $UID -ge 1000 ] && [ "`id -un`" = "`id -gn`" ]; then
echo "umask 002"
else
echo "umask 022"
fi
--------------------------------------------------
[user1@centos ~]$ sh um.sh
umask 002
[user1@centos ~]$ su -
Password:
Last login: Wed Dec 6 11:46:32 +11 2023 on :0
[root@centos ~]# sh /home/user1/um.sh
umask 022
# 파일과 관련한 조건
1. -d 파일명 : 파일이 디렉터리면 true
2. -e 파일명 : 파일이 존재하면 true
3. -f 파일명 : 파일이 일반 파일이면 true
4. -r 파일명 : 파일 읽기가 가능하면 true
5. -w 파일명 : 파일 쓰기가 가능하면 true
6. -s 파일명 : 파일 크기가 0이 아닌면 true
7. -x 파일명 : 파일이 실행가능한 상태면 true
[user1@centos script]$ vi file_exist.sh
--------------------------------------------------
#!/bin/bash
fname=/home/user1/emp.csv
if [ -e $fname ]; then
cat $fname
else
echo "파일이 없습니다."
fi
--------------------------------------------------
[user1@centos script]$ sh file_exist.sh
■ case문
[user1@centos script]$ vi fruit.sh
--------------------------------------------------
#!/bin/bash
fruit="apple"
case $fruit in
"apple")
echo "This is a red fruit";;
"banan")
echo "This is a yellow fruit";;
"orange")
echo "This is an orange fruit";;
*)
echo "Unknown fruit";;
esac
--------------------------------------------------
[user1@centos script]$ vi backup.sh
--------------------------------------------------
#!/bin/bash
echo "
[1] daily backup
[2] weekly backup
[3] monthly backup"
echo -n "Enter your choice : "
read choice
case $choice in
1)
echo "daily backup sh daily_backup.sh";;
2)
echo "weekly back sh weely_backup.sh";;
3)
echo "monthly back sh monthly_backup.sh";;
*)
echo "enter[1,2,3]"
esac
--------------------------------------------------
■ 반복문
1.for loop
for 변수 in 값1 값2 값3
do
반복할 문장
done
[user1@centos script]$ vi hap.sh
------------------------------------------------
#!/bin/bash
hap=0
for i in 1 2 3 4 5 6 7 8 9 10
do
hap=`expr $hap + $i`
done
echo "1부터 10까지의 합은 $hap 입니다."
------------------------------------------------
[user1@centos script]$ vi hap2.sh
------------------------------------------------
#!/bin/bash
hap=0
for i in {1..10}
do
hap=`expr $hap + $i`
done
echo "1부터 10까지의 합은 $hap 입니다."
------------------------------------------------
[user1@centos script]$ vi hap3.sh
------------------------------------------------
#!/bin/bash
hap=0
for i in {1..10..2} #1부터 10까지, 2씩 증가
do
hap=`expr $hap + $i`
done
echo "1부터 10까지의 2씩 증가한 합은 $hap 입니다."
------------------------------------------------
[user1@centos script]$ vi dan.sh
------------------------------------------------
#!/bin/bash
for i in {1..9}
do
result=`expr 2 \* $i`
echo "2 * $i = $result"
done
------------------------------------------------
[user1@centos script]$ sh dan.sh
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
# 배열
[user1@centos script]$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
[user1@centos script]$ {1..10}
bash: 1: command not found...
[user1@centos script]$ echo {1..10..2}
1 3 5 7 9
[user1@centos script]$ vi cnt.sh
---------------------------------------------
#!/bin/bash
for i in echo {1..10}
do
echo "$i"
done
---------------------------------------------
[user1@centos script]$ sh cnt.sh
echo
1
2
3
4
5
6
7
8
9
10
[user1@centos script]$ vi cnt2.sh
---------------------------------------------
#!/bin/bash
v_start=1
v_end=10
for i in echo {$v_start..$v_end}
do
echo "$i"
done
---------------------------------------------
[user1@centos script]$ sh cnt2.sh
echo
{1..10}
■ eval : 문자열을 명령문으로 인식하고 실행하는 명령어
[user1@centos script]$ v_str="ls -l"
[user1@centos script]$ eval $v_str
total 64
-rw-rw-r--. 1 user1 user1 312 Dec 6 13:33 backup.sh
-rw-rw-r--. 1 user1 user1 68 Dec 6 16:12 cnt1.sh
-rw-rw-r--. 1 user1 user1 98 Dec 6 16:13 cnt2.sh
-rw-rw-r--. 1 user1 user1 54 Dec 6 16:07 cnt.sh
-rw-rw-r--. 1 user1 user1 99 Dec 6 12:14 comm_1.sh
-rw-rw-r--. 1 user1 user1 102 Dec 6 12:14 comm_2.sh
-rw-rw-r--. 1 user1 user1 196 Dec 6 12:16 comm_3.sh
-rw-rw-r--. 1 user1 user1 173 Dec 6 15:59 dan_9.sh
-rw-rw-r--. 1 user1 user1 85 Dec 6 14:16 dan.sh
-rw-rw-r--. 1 user1 user1 115 Dec 6 13:06 file_exist.sh
-rw-rw-r--. 1 user1 user1 220 Dec 6 13:22 fruit.sh
-rw-rw-r--. 1 user1 user1 228 Dec 6 16:00 gugudan.sh
-rw-rw-r--. 1 user1 user1 119 Dec 6 14:00 hap2.sh
-rw-rw-r--. 1 user1 user1 167 Dec 6 14:10 hap3.sh
-rw-rw-r--. 1 user1 user1 119 Dec 6 13:58 hap.sh
-rw-rw-r--. 1 user1 user1 115 Dec 6 12:26 um.sh
[user1@centos script]$ vi cnt.sh
---------------------------------------------
#!/bin/bash
for i in `eval echo {1..10}`
do
echo "$i"
done
---------------------------------------------
[user1@centos script]$ vi cnt2.sh
---------------------------------------------
#!/bin/bash
v_start=1
v_end=10
for i in `eval echo {$v_start..$v_end}`
do
echo "$i"
done
---------------------------------------------
# 문자열 누적
[user1@centos script]$ star="★"
[user1@centos script]$ echo $star
★
[user1@centos script]$ star2=""
[user1@centos script]$ echo $star2
[user1@centos script]$ star2=$star2$star
[user1@centos script]$ echo $star
★
[user1@centos script]$ star2=$star2$star
[user1@centos script]$ echo $star
★
[user1@centos script]$ echo $star2
★★
[user1@centos script]$ echo $star2
★★
[user1@centos script]$ star2=$star2$star
[user1@centos script]$ echo $star2
★★★
[user1@centos script]$ star2=$star2$star
[user1@centos script]$ echo $star2
★★★★
# 반복문 ((초기값; 조건문; 증감식))
for i in {1..10}
do
echo $i
done
[user1@centos script]$ vi test.sh
---------------------------------------------
#!/bin/bash
for ((i=1; i<=10; i++))
do
echo $i
done
---------------------------------------------
[user1@centos script]$ sh test.sh
1
2
3
4
5
6
7
8
9
10
# for문 (())
for ((i=10; i>0; i--))
do
echo $i
done
ex)
select power(2,3)
from dual;
sh power.sh 2 3
---------------------------------------------
#!/bin/bash
x=1
for i in `expr echo {1..$2}`
do
x=`expr $x \* $1`
done
echo $x
[선생님 코드]
result=1
for ((i=1; i<=$2; i++))
do
result=`expr $result \* $1`
done
echo $result
---------------------------------------------
[user1@centos script]$ sh power.sh 2 3
8
■ while loop
while [ 조건식 ]
do
실행문
done
[user1@centos script]$ vi while_test.sh
----------------------------------------------
#!/bin/bash
i=1
while [ $i -le 10 ]
do
echo $i
i=`expr $i + 1`
done
----------------------------------------------
[user1@centos script]$ sh while_test.sh
1
2
3
4
5
6
7
8
9
10
'Data Base > Linux' 카테고리의 다른 글
231207 Linux _ oralce11g 설치 및 설정 ⓐ (1) | 2023.12.07 |
---|---|
231207 Linux_oracle linux 설치 (0) | 2023.12.07 |
231205 Linux shell ⓑ (1) | 2023.12.05 |
231205 Linux csv 활용 ⓐ (2) | 2023.12.05 |
231205 Linux JAVA 설정 (1) | 2023.12.05 |