(1) Shell 스 크 립 트 프로 그래 밍 기초 의 논리 적 판단 과 스 크 립 트 테스트

5334 단어
최근 샤 오 백 은 셸 스 크 립 트 의 기초 프로 그래 밍 을 배 웠 다. 최근 에 배 운 지식 을 간단하게 정리 할 필요 가 있 을 것 같 아서 이 블 로 그 를 썼 다. 부족 할 수도 있다.후기 에 공부 한 후에 완 선 될 것 이 라 고 지적 해 주 십시오.다음은 셸 로그 인 방식 두 가 지 를 말씀 드 리 겠 습 니 다.
대화 식 로그 인:
(1) 터미널 을 통 해 계 정 비밀 번 호 를 입력 하고 로그 인 (2) "su - UserName"으로 전환 하 는 사용자 실행 순서:/etc/profile -->/etc/profile. d/*. sh --> ~/. bashprofile --> ~/.bashrc -->/etc/bashrc
비 대화 식 로그 인:
(1) su UserName (2) 그래 픽 인터페이스 에서 열 린 터미널 (3) 실행 스 크 립 트 (4) 다른 bash 인 스 턴 스 실행 순서: ~/bashrc --> etc/bashrc -->/etc/profile. d/*. sh
bash 프로필 적용 범위
  • 전역 설정:
     /etc/profile
     /etc/profile.d/*.sh
     /etc/bashrc
    
  • 개인 설정:
      ~/.bash_profile
      ~/.bashrc
    
  • 1. Shell 스 크 립 트 만 들 기
    vim 등 텍스트 편집 도 구 를 이용 하여 텍스트 파일 을 만 드 는 첫 줄 은 셸 성명 서열 을 포함해 야 합 니 다:\#!예 를 들 면:
    #!/bin/bash
    #!/usr/bin/python
    #!/usr/bin/perl      
    
  • 셸 스 크 립 트 의 용도:
  • 1. 자동화 집행 상용 명령
  • 2. 시스템 관리 와 고장 제거
  • 3. 간단 한 프로그램 만 들 기
  • 4. 텍스트 나 파일 만 들 기

  • 2. 스 크 립 트 파일 실행
    먼저 텍스트 파일 권한 부여:
      chmod +x $name.sh
    

    스 크 립 트 파일 을 직접 실행 합 니 다./$PATH/$name. sh 또는 $shell./$PATH/$name. sh. 다음은 소 백 이 간단 한 스 크 립 트 파일 형식 을 간단하게 썼 습 니 다.\#!/bin/bash [ $# -gt 1 ] && { echo "must be a arg ";exit;} [ $# == 0 ] && read -p "please input script name: "name || name=$1 [ -e $name ] && { echo "the file is exist , please return the script and input another name"; exit ; } touch $name echo "#!/bin/bash # author:wangnan # mailbox:*********@163.com # QQ:******** # blog:http://www.jianshu.com/u/fb9ec5da4a64 # description:this is for wang # echo "Your working directory is: $(pwd) "# date date ">"$name"chmod +x "$name"vim $name unset name 이 스 크 립 트 의 기능 은 스 크 립 트 템 플 릿 을 만 드 는 것 입 니 다. 먼저 스 크 립 트 를 실행 할 때 파 라 메 터 를 추가 할 지 여 부 를 판단 하고 추가 하지 않 으 면 종료 합 니 다. 추가 하면 이름 이 같 을 지 여 부 를 판단 하고 같은 경우 다른 이름 으로 이름 을 바 꾼 다음 실행 권한 제한 을 자동 으로 추가 하고 이 스 크 립 트 를 엽 니 다. unset
    3. 디 버 깅 스 크 립 트
    스 크 립 트 의 문법 오류 검출
    bash -n /$PATH/$name.sh
    

    디버그 실행
    bash -x /$PATH/$name.sh
    

    4. 논리 연산
    연산 1 과 1 = 1 과 0 = 0 과 1 = 0 과 0 = 0 과 0 = 0 과 0 = 0
    또는 연산 1 또는 1 = 1 또는 0 = 10 또는 1 = 10 또는 0 = 0
    비 연산!!1 = 0 ! 0 = 1
    단락 연산
    단락 과 & & 조건 성 을 대표 하 는 AND THEN 의 첫 번 째 는 0 이 고, 결 과 는 0 이 어야 합 니 다. 첫 번 째 는 1 이 고, 두 번 째 는 연산 에 참여 해 야 합 니 다.
    단락 또는 | | 조건 성 을 대표 하 는 OR ELSE 의 첫 번 째 는 1 이 고 결 과 는 반드시 1 번 째 는 0 이 며 두 번 째 는 연산 에 참여 해 야 합 니 다.
    grep -q no_such_user /etc/passwd || echo 'No such user'
    ping -c1 -W2 station1 &> /dev/null&& echo "station1 is up" || (echo 'station1 is unreachable'; exit 1)
    

    5. test 명령 을 이용 한 테스트 기능
    시스템 위의 일부 파일 이나 관련 속성 을 검사 하려 면 test 라 는 명령 을 사용 하 십시오. 예 를 들 어/testfile 파일 이 존재 하 는 지 확인 하려 면 다음 을 사용 하 십시오.
    test -e /testfile
    

    실행 결 과 는 아무런 메시지 도 표시 되 지 않 지만, 마지막 으로 $를 통과 할 수 있 습 니까?또는 & & 및 | | 모든 결 과 를 보 여 줍 니 다!예 를 들 어 우 리 는 위의 예 를 이렇게 바 꾸 었 다.
     test -e /testfile && echo "exist" || echo "Not exist"
    

    최종 결 과 는 우리 에 게 "exist"인지 "Not exist"인지 알려 줄 수 있 습 니 다!그러면 저 는 - e 가 '파일' 이 존재 하 는 지 테스트 하 는 것 임 을 알 고 있 습 니 다. 만약 에 테스트 를 하려 면 우리 가 선택 할 수 있 는 옵션 이 많 습 니 다!
  • 파일 테스트
  • 테스트 의 표식
    대표 적 의미
    - e (동 - a)
    이 '파일 이름' 이 존재 합 니까?
    -f
    이 '파일 이름' 이 존재 하고 파일 (file) 인지 여부
    -d
    이 '파일 이름' 이 존재 하고 디 렉 터 리 (directory) 인지 여부
    -c
    존재 하 는 지 여부 및 문자 장치 파일 (character device)
    -d
    디 렉 터 리 파일 이 존재 하 는 지 여부
    -f
    존재 하고 일반 파일 인지 여부
    - h (또는 - L)
    존재 하고 심 볼 릭 링크 파일
    -p
    존재 하 는 지, 소켓 파일 인지 여부
    -r
    존재 하고 읽 을 수 있 는 지 여부
    -w
    존재 하고 쓸 수 있 는 지 여부
    -x
    존재 하고 실행 가능 한 지 여부
    -u
    존재 하고 suid 권한 이 있 는 지 여부
    -g
    존재 하고 sgid 권한 이 있 는 지 여부
    -k
    존재 하고 sticky 권한 이 있 는 지 여부
    -s
    존재 하 는 지, 비어 있 지 않 은 지 여부
    -t fd
    fd 는 파일 설명자 가 열 려 있 고 터미널 과 관련 이 있 는 지 여 부 를 표시 합 니 다.
    -N
    파일 이 자동 으로 읽 힌 후에 수정 되 었 는 지 여부 입 니 다.
    -O
    현재 유효한 사용자 가 파일 소유자 인지 여부
    -G
    현재 유효한 사용자 가 파일 그룹 인지 여부
  • 문자열 테스트
  • 테스트 의 표식
    대표 적 의미
    ==
    여부
    >
    ascii 코드 가 ascii 코드 보다 큰 지 여부
    <
    작 을 지 여부
    !=
    여부
    =~
    왼쪽 문자열 이 오른쪽 PATTERN 과 일치 할 수 있 는 지 여부 () P: 이 표현 식 은 [[]] 에 사 용 됩 니 다.확 장 된 정규 표현 식)
    -z
    문자열 이 비어 있 는 지, 비어 있 는 지, 비어 있 지 않 은 지, 가짜 입 니 다.
    -n
    문자열 이 비어 있 지 않 은 지, 비어 있 지 않 은 지, 비어 있 지 않 은 지 여부 입 니 다.
  • 수치 테스트
  • 테스트 의 표식
    대표 적 의미
    -gt
    보다 큰 지 여부
    -ge
    같다
    -eq
    여부
    -ne
    여부
    -lt
    작 을 지 여부
    -le
    ... 인지 아 닌 지
  • 두 눈 테스트
  • 테스트 의 표식
    대표 적 의미
    -ef
    같은 장치 의 같은 inode 를 가리 키 는 지 여부
    -nt
    이전 파일 보다 새 것 인지 여부
    -ot
    이전 파일 보다 오래된 지 여부
    filetest1   -ef filetest2: filetest1 与filetest2 是否指向同一个设备上的相同inode
    filetest1 -nt filetest2: filetest1 是否新于 于filetest2
    filetest1 -ot filetest2: filetest1 是否旧于 于filetest2
    
  • Bash 의 조합 테스트 조건
  • 첫 번 째 방식: COMMAND 1 & & COMMAND 2 및 COMMAND 1 | | COMMAND 2 또는!COMMAND 비 여: [- r FILE] & [- w FILE]]
  • 두 번 째 방식: EXPRESSION 1 - a EXPRESSION 2 및 EXPRESSION 1 - o EXPRESSION 2 또는!EXPRESSION 은 반드시 테스트 명령 을 사용 하여 진행 해 야 한다
  • 예시:
  • [ -z “$HOSTNAME” -o $HOSTNAME "=="localhost.localdomain" ] && hostname www.magedu.com
    [ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab

    좋은 웹페이지 즐겨찾기