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

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

좋은 웹페이지 즐겨찾기