개요
이번장에서는 다양한 스크립트와 결과물에 대해서 적어보겠다.
사용자 정의 함수
nano function.sh
#!/bin/bash
Function () {
echo "나는 함수다"
return
}
echo "프로그램을 시작합니다."
Function
echo "프로그램을 종료하겠습니다."
exit 0
root@server:~# sh function.sh
프로그램을 시작합니다.
나는 함수다
프로그램을 종료하겠습니다.
함수파라미터
nano parafunction.sh
#!/bin/bash
plus () {
echo `expr $1 + $2`
}
echo "100더하기 20을 실행합니다."
plus 100 20
exit 0
root@server:~# sh parafunction.sh
100더하기 20을 실행합니다.
120
eval
#!/bin/sh
str="ls -l eval.sh"
echo $str
eval $str
exit 0
root@server:~# sh eval.sh
ls -l eval.sh
-rw-r--r-- 1 root root 59 7월 30 14:45 eval.sh
eval은 문자열을 명령문으로 인식하여 실행한다. 위의 결과는 문자 그대로 아래 결과는 진짜 eval.sh를 보여주는 것을 볼 수 있다.
export
nano exportA.sh
#!/bin/sh
echo $var1
echo $var2
exit 0
nano exportB.sh
#!/bin/bash
export var1="exportA var1"
export var2="exportA var2"
sh exportA.sh
exit 0
exportB창에는 echo를 넣지 않았지만 exportA에서 echo를 넣었기 때문에 var1과 var2가 exportB.sh에서 echo되는 것을 볼 수 있습니다.
root@server:~# sh exportB.sh
exportA var1
exportA var2
printf
#!/bin/bash
con1=210.2
con2="우분투는 멋져!!"
printf "%6.2f \n\n \t %s \n" $con1 "$con2" #문자열에는 꼭 "$con2"을 붙여야 한다.
exit
root@server:~# sh printf.sh
210.20
우분투는 멋져!!
set과 $
#!/bin/bash
echo "오늘 날짜는 $(date) 입니다."
set $(date)
echo "오늘은 $4요일 입니다"
exit 0
root@server:~# sh set.sh
오늘 날짜는 2023. 07. 30. (일) 15:11:38 KST 입니다.
오늘은 (일)요일 입니다.
$4는 date에서 4번째 파라미터를 말하는 것이다. $숫자를 바꾸면 다른 것이 출력된다.
shift
nano shift.sh
#!/bin/sh
func () {
str=""
while [ "$1" != "" ]; do
str="$str $1"
shift
done
echo $str
}
func AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK LLL MMM
exit
while문을 보면 $1이 아닌 경우 계속 출력하는 것이다. shift로 인해서 $2였던 것이 $1로 바뀌면서 계속 출력된다.
따라서 AAA부터 MMM까지 출력되는 것이다.
'Engineer > virtual machine' 카테고리의 다른 글
[리눅스] 우분투 ubuntu 방화벽 (0) | 2023.07.31 |
---|---|
[리눅스] 우분투 ubuntu owncloud로 웹하드 만들기 (0) | 2023.07.31 |
[리눅스] 우분투 ubuntu 조건문, 반복문 if, case, while, for (0) | 2023.07.30 |
[리눅스] 우분투 ubuntu 셸 스크립트 - 변수 (0) | 2023.07.30 |
[리눅스] 우분투 ubuntu 셸과 셸스크립트, 환경변수 (0) | 2023.07.30 |