반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

비전공개미 개발노트

[Linux] shell script - case, file구분, for, while, 함수, eval, export, set, shift 본문

서버/Linux

[Linux] shell script - case, file구분, for, while, 함수, eval, export, set, shift

비전공개미 2022. 11. 4. 17:02
반응형
SMALL

case

(입력값에 따라서 문구를 출력 switch문과 동일)

#!/bin/bash
case $1 in
    1) echo "one";;
    2) echo "two";;
    3) echo "three";;
    *) echo "number";; #나머지
esac

exit 0

case.sh실행

 

 

 

file

(fname이 파일인지 폴더인지 구분)

#!/bin/bash
fname=/root/a.txt
if [ -e $fname ]; then
	if [ -f $fname ]; then
        	tail -5 $fname  #fname파일내용을 뒤에서 다섯번째줄까지만 출력
    	else
        	echo directory  #파일이 아니고 폴더일경우 directory문구 출력
    	fi
else
	echo "no exist"  #파일이 없을경우
fi

exit 0

-d filename : 디렉토리면 true

-e filename : 존재하면 true

-f filename : 일반파일이면 true

-g filename : 파일에 set-group-id가 설정되면 true

-r filename : 읽기 가능이면 true

-s filename : 크기가 0이면 true

-u filename : 파일에 set-user-id가 설정되면 true

-w filename : 쓰기 가능이면 true

-x filename : 실행 가능이면 true

file.sh실행

 

 

 

for

(반복문)

#!/bin/bash
sum=0
i=0

#for i in 1 2 3 4 5 6 7 8 9 10  #값을 직접나열도 가능
#for i in $(seq 1 10) #1~10
#for i in $(seq 1 2 10) #2씩 증가
for ((i=1; i<=10; i++))
do
	sum=`expr $sum + $i`  #값을 입력할때는 $를 붙이지 않는다
done
	echo "sum :" $sum
exit 0

for.sh실행

 

 

 

while

(반복문)

#!/bin/bash
sum=0
i=1
while [ $i -le 10 ]
do
    sum=`expr $sum + $i`
    i=`expr $i + 1`
done
	echo "sum :" $sum
exit 0

while.sh실행

 

 

 

function

(사용자 정의 함수)

#!/bin/bash
hap() {
	return `expr $1 + $2`
}
#hap 10 20
hap $1 $2
sum=$?
echo $sum

exit 0

function.sh실행

 

 

 

eval

(문자열을 명령문으로 인식하고 실행)

#!/bin/bash
str="ls -al"

#echo $str
#eval $str

echo $str + "/"
eval $str + "/"

exit 0

eval.sh실행

 

 

 

export

(외부 변수 선언, 다른 프로그램에서도 사용할 수 있는 변수)

export1.sh

#!/bin/bash
echo $a
echo $b
exit 0

 

export2.sh

#!/bin/bash
a=Local
export b=Export
bash export1.sh
exit 0

export2.sh실행

 

 

 

set / shift

(리눅스 명령을 결과로 사용 또는 결과를 파라미터로 사용할 때)

#!/bin/bash
echo "now :" $(date)
set $(date)
echo $1
echo $2
echo $3
echo $4
echo $5
echo $6

echo "---------------------------"

shift
echo $0
echo $1
echo $2
echo $3
echo $4
echo $5
exit 0

위 값은 set $1부터 출력, 아래는 shift $0부터 출력

set.sh실행

반응형
LIST
Comments