본문 바로가기

Engineer/virtual machine

[리눅스] 우분투 ubuntu 각종 스크립트

개요

이번장에서는 다양한 스크립트와 결과물에 대해서 적어보겠다.

 

사용자 정의 함수 

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까지 출력되는 것이다.