링크 ux 셸 에서 if else 및 크 고 작 으 며 논리 적 표현 식 소개

예 를 들 어 문자열 을 비교 하고 파일 의 존재 여부 와 읽 을 수 있 는 지 여 부 를 판단 하 는 등 보통'[]'로 조건 테스트 를 표시 합 니 다.주의:이곳 의 빈 칸 은 매우 중요 합 니 다.네모 난 괄호 의 빈 칸 을 확보 해 야 한다.필 자 는 빈 칸 이 부족 하거나 위치 가 맞지 않 아 귀중 한 시간 을 낭비 한 적 이 있다.if ....; then....elif ....; then...else...fi[-f"somefile"]:파일 여 부 를 판단 합 니 다[-x"/bin/ls"]:/bin/ls 가 존재 하고 실행 가능 한 권한 이 있 는 지 판단 합 니 다[-n"$var"]:$var 변수 가 값 이 있 는 지 판단 합 니 다["$a"="$b"]:$a 와$b 가 같은 지 판단 합 니 다-r file 사용 자 는 진짜-w file 사용자 로 읽 을 수 있 습 니 다-x file 사용 자 는 진짜-f fi 로 실행 할 수 있 습 니 다.le 파일 은 정규 파일 로 진-d file 파일 을 디 렉 터 리 로 진-c file 파일 을 문자 로 합 니 다.특수 파일 은 진-b file 파일 을 블록 으로 합 니 다.특수 파일 은 진-s file 파일 크기 가 0 이 아 닐 때 진-t file 입 니 다.파일 설명자(기본 값 1)가 지정 한 장치 가 터미널 일 때 진실 입 니 다.
조건 부 선택 을 포함 하 는 셸 스 크 립 트 는 변 수 를 포함 하지 않 는 작업 에 대해 간단 한 셸 스 크 립 트 를 수행 할 수 있 습 니 다.그러나 일부 의사 결정 임 무 를 수행 할 때 는 if/then 의 조건 판단 이 필요 하 다.셸 스 크 립 트 프로 그래 밍 은 비교 연산,파일 존재 여부 판단 등 을 포함 하여 이러한 연산 을 지원 합 니 다.기본 적 인 if 조건 명령 옵션 은 다음 과 같 습 니 다.-eq―두 매개 변수 가 같 습 니까?if[-f"filename"]-d-디 렉 터 리 에 거의 모든 판단 이 존재 하 는 지 확인 합 니 다.스 크 립 트 에서 자주 사용 하 는-f 명령 옵션 은 파일 을 실행 하기 전에 존재 하 는 지 확인 합 니 다.
여러분 의 이 해 를 편리 하 게 하기 위해 두 가지 예 를 들 어 보 겠 습 니 다.
1.파일 존재 여부 판단

#!/bin/sh
#
# link:www.jb51.net
# date:2013/2/27

YACCESS=`date -d yesterday +%Y%m%d`
FILE="access_$YACCESS.log.tgz"
cd /data/nginx/logs
if [ -f "$FILE" ];then
echo "OK"
else
echo "error $FILE" > error.log
mail -s "$FILE backup fail" [email protected] <error.log
fi


#!/bin/sh
# ,
# link:www.jb51.net
# date:2013/2/27
#
DIR=/data/img_cache
DAY=`date +"%Y-%m-%d %H:%M"`
NUM=`ls $DIR |wc -l`
DIRNAME=`ls $DIR| grep leveldb | head -n 1 | awk '{print $NF}'`
if [[ $NUM -gt 3 ]];then
  rm -rf $DIR/$DIRNAME
  echo "---------$DAY----($DIR)-----------------------" >> /tmp/img_cache.log
  echo "$DIRNAME Deleted successful" >> /tmp/img_cache.log
fi

좋은 웹페이지 즐겨찾기