스크립트 작성할 때 if 조건문의 옵션들..


문법

#!/bin/sh

if [ -f "$1" ]
then
    echo "$1 is a file"
else
    echo "$1 is not a file"
fi



String ComparisonDescription
Str1 = Str2Returns true if the strings are equal
Str1 != Str2Returns true if the strings are not equal
-n Str1Returns true if the string is not null
-z Str1Returns true if the string is null
Numeric ComparisonDescription
expr1 -eq expr2Returns true if the expressions are equal
expr1 -ne expr2Returns true if the expressions are not equal
expr1 -gt expr2Returns true if expr1 is greater than expr2
expr1 -ge expr2Returns true if expr1 is greater than or equal to expr2
expr1 -lt expr2Returns true if expr1 is less than expr2
expr1 -le expr2Returns true if expr1 is less than or equal to expr2
! expr1Negates the result of the expression
File ConditionalsDescription
-d fileTrue if the file is a directory
-e fileTrue if the file exists (note that this is not particularly portable, thus -f is generally used)
-f fileTrue if the provided string is a file
-g fileTrue if the group id is set on a file
-r fileTrue if the file is readable
-s fileTrue if the file has a non-zero size
-uTrue if the user id is set on a file
-wTrue if the file is writable
-xTrue if the file is an executable







SH

리눅스 redhat 6.6에서 수행


설정 파일에 다음과 같은 코드번호가 있는데, 

이 코드 정보를 사용하는 해더파일과 소스파일 찾는 경우

[1234]

[2222]

[34343]

#[3241] 



#!/bin/sh


SRC_PATH="/home/test/src"

GET_ACODE_RES=`grep '\[' cod_info_file | sed 's/.//' | sed 's/.$//'`     # sed로 맨앞, 맨뒤에 1글자씩 제거


for i in $GET_ACODE_RES;  # 파일에서 grep한 결과를 1개씩 돌면서 처리

do

    if [ ! "${i:0:1}" == "[" ]  # 맨앞에 1바이트만 비교, left braket으로 시작하는지 확인 [1100]

    then

        RES=`find $SRC_PATH -name \*.c -o -name \*.h | xargs grep $i`    # find 명령으로 *.c, *.h 모두 찾기

        if [ "$RES" != "" ]; then

            echo $RES

        fi

    fi

done


리눅스에서 수행




#!/bin/sh


GREP_CMD="/binnnnn/grep"         # grep 명령어 경로 지정


CheckGrep() {

    if [ ! -f "GREP_CMD" ]¯          # 만약에 없는 경우

    then

        GREP_CMD=$(find /bin /sbin -maxdepth 1  \     # /bin, /sbin에서 찾도록,, 이부분을 바꿔가면서 처리

                -name \grep             \

                -and -type f 2>/dev/null | head -n 1)

    fi

}


CheckGrep    






+ Recent posts