*서브쉘 실행

./test.sh

 

*쉘 자체 실행

. test.sh

source test.sh

 

시스템 변수와 로컬변수가 충돌 할 경우 서브쉘로 돌려주는 것이 좋다.

 

예를 들어...아래와 같은 shell파일이 있다고 하면...

 

test.sh

 

#!/bin/bash

HOME=/home/aiadm
echo $HOME

 

test.sh을 실행하기 전에 echo $HOME 입력했을 때

/home/test 였을 경우...

 

./test.sh(서브쉘로 실행)를 실행한 후에 $HOME 환경변수는 바뀌지 않는다.

 

. test.sh(쉘 자체를 실행)를 실행한 후에 $HOME 환경변수는 변경되며...환경변수가 변경될 수 있기 때문에 위험하다.

 


 

 


 

 


 

1) If문 사용하기 :


 

#!/bin/bash

if pwd
    then
        echo pwd command exists
fi

if mypwd
    then
        echo mypwd exists
fi

 

if cat /etc/passwd
    then echo cat exists
fi

if...then...fi

 

 

2) if else문 사용하기

 

#!/bin/bash

read -p "Input User Name : " name

if grep $name /etc/passwd #입력받은 name값이 /etc/passwd 밑에 있으면
        then echo $name exists!!
        else echo $name does not exist
fi

exit 0

 

if...then....else..fi


 

 


 

 


3) if 조건문을 따로 분리할 경우 :

 

#!/bin/bash

read -p "Input User Name : " name
grep $name /etc/passwd
if (($? == 0 ))  # 이전 조건에 에러가 없을 경우

        then echo $name exists!!
        else echo $name does not exist
fi

exit 0

 

4) test 명령어 사용하기 :

 

#!/bin/bash

value="Apple"

if test $value
        then echo Value : $value
else
        echo value is empty
fi

exit 0

 


 

 


 

 


5) 숫자 비교 테스트


n1 -eq n2

=> n1과 n2가 같은지 검사함

n1 -ne n2

=> n1과 n2가 같지 않은지 검사함

n1 -ge n2

=> n1이 n2보다 크거나 같은지 검사함
n1 -gt n2

=> n1이 n2보다 큰지 검사함

n1 -le n2

=> n1이 n2보다 작거나 같은지 검사함

n1 -lt n2

=> n1이 n2보다 작은지 검사함

 

+ Recent posts