1shell 기초, 변수, 연산 자

7194 단어
1shell 기초 문법
운영 체제 의 가장 바깥쪽 에서 사용자 와 직접 대 화 를 하 는 명령 해석 기 입 니 다.
우리 가 입력 한 명령 은 컴퓨터 가 인식 되 지 않 을 때 우리 가 번역 할 수 있 도록 도와 주 는 프로그램 이 필요 하 다. 컴퓨터 가 식별 할 수 있 는 바 이 너 리 프로그램 이 되 는 동시에 컴퓨터 가 생 성 한 결 과 를 우리 에 게 되 돌려 주어 야 한다.
셸 스 크 립 트, 바로 우리 입 니 다. 원래 의 Liux 명령 이나 문구, 그리고 관련 문법 조합 을 한 파일 에 넣 은 다음 이 프로그램 파일 을 통 해 실 행 될 때 이 프로그램 은 셸 스 크 립 트 라 고 말 합 니 다.
프로 그래 밍 언어 분류
  • 저급 언어 (기 계 를 위 한 언어)
  • 기계 언어: 이 진 언어
  • 어 셈 블 리 언어: 기호 언어
  • 고급 언어
  • 정적 언어, 컴 파일 형 언어, 예 를 들 어 c, c +, 자바
  • 동적 언어, 해석 형 언어, 예 를 들 어 phop, 셸, python

  • gcc 편집 기 는 인간 이 이해 하 는 언어 를 기계 가 이해 하 는 언어 로 번역 합 니 다.
    단순 셸 스 크 립 트
    [root@meditation ~]# cat test.sh 
    #!/bin/bash
    
    #this is shell
    echo "hello world"
    touch /tmp/a.txt
    

    두 가지 실행 스 크 립 트 방식
    [root@meditation ~]# chmod +x test.sh 
    [root@meditation ~]# ./test.sh 
    hello world
    [root@meditation ~]# bash test.sh 
    hello world

    2 변수
    변 수 는 셸 이 데 이 터 를 전달 하 는 방법 이다.
    우 리 는 변 수 를 용기 로 사용 할 수 있 습 니 다. 변 수 를 통 해 메모리 에 데 이 터 를 저장 할 수도 있 고 스 크 립 트 실행 에서 저 장 된 데 이 터 를 수정 하고 접근 할 수도 있 습 니 다.
  • 변 수 는 숫자, 자모, 밑줄 로 구성 되 어 대소 문 자 를 구분 합 니 다.   숫자 로 시작 할 수 없습니다
  • 등 호 는 변수 배분 에 사용 되 고 사용 과정 에서 등호 양쪽 에 빈 칸 이 있어 서 는 안 된다
  • .
  • 변수 할당 형식 이 문자열 일 때 따옴표 로 묶 어야 합 니 다
  • 변 수 를 호출 할 때 변수 이름 앞 에 달러 기호 $
  • 를 추가 합 니 다.
    역할 에 따라 분류 하 다
  • 1 사용자 정의 변수,
  • 2 환경 변 수 는 주로 시스템 운영 환경 과 관련 된 데이터
  • 를 저장 합 니 다.
  • 3 위치 매개 변수 변 수 는 주로 스 크 립 트 의 침대 밑 매개 변수 나 데이터 에 사 용 됩 니 다. 변수 이름 은 사용자 정의 할 수 없고 변수 역할 은 고정 적 입 니 다
  • 4 미리 정 의 된 변 수 는 bash 에서 정 의 된 변수 입 니 다. 변수 이름 은 사용자 정의 할 수 없고 변수 역할 도 고정 되 어 있 습 니 다
  • 변수 역할 영역 에 따라 분류
  • 전역 변 수 는 환경 변수 입 니 다. 셸 스 크 립 트 의 실행 이 끝나 면 값 이 사라 지지 않 습 니 다
  • 부분 변 수 는 셸 프로그램 내부 에서 정 의 된 것 으로 그 사용 범 위 는 프로그램 을 정의 하 는 데 국한 되 고 다른 프로그램 에 보이 지 않 습 니 다. 이 는 사용자 정의 변수, 위치 매개 변수 변수, 미리 정 의 된 변수
  • 를 포함 합 니 다.
    2.1 사용자 정의 변수
    규칙.
  • 변수 명 은 자모, 숫자, 밑줄 로 구성 되 어 있다.
  • 숫자 로 시작 하 는 것 을 허락 하지 않 으 며, 등호 양쪽 에 빈 칸 이 있 는 것 을 허락 하지 않 는 다
  • 대소 문자 구분
  • 변 수 를 사용 할 때 변수 이름 앞 에 $
  • 를 추가 합 니 다.
    예 를 들다
    예 1, 등호 양쪽 에 빈 칸 이 있어 서 는 안 된다.
    [root@meditation ~]# var1 = 123
    -bash: var1: command not found
    [root@meditation ~]# var1=123
    [root@meditation ~]# echo $var1
    123

    예 2, 변수 값 의 중첩, ${} 사용
    $name 은 ${name} 의 간략화 버 전 입 니 다. 어떤 경우 에는 괄호 로 인 한 방법 으로 잘못된 의 미 를 제거 해 야 합 니 다.
    [root@meditation ~]# var2=mysql
    [root@meditation ~]# echo $var2db.log
    .log
    [root@meditation ~]# echo ${var2}db.log
    mysqldb.log

    예 3, 명령 의 교체, $() 또는 반 따옴표 사용)
    [root@meditation ~]# echo $date
    
    [root@meditation ~]# echo $(date "+%F")
    2019-06-28
    [root@meditation ~]# echo `date "+%F"`
    2019-06-28

    예 4, 명령 의 끼 워 넣 기 사용 $($())
    [root@meditation ~]# var3=$(tar zcvf sh.tar.gz $(find /root/*.sh))
    tar:           “/”

    셸 의 작은 따옴표 와 작은 따옴표 의 차이
    작은 따옴표 간 의 내용 은 변 수 를 그대로 부여 합 니 다. 작은 따옴표 간 의 내용 은 특수 기호 가 있 으 면 그 특수 한 의 미 를 유지 합 니 다.
  • '보 이 는 대로 얻 고 그대로 수출 한다.
  • "내용 에 명령, 변수 등 이 있 으 면 먼저 변수, 명령 을 결 과 를 분석 한 다음 최종 내용 을 출력 합 니 다.
  • [root@meditation ~]# echo 'this is $var2'
    this is $var2
    [root@meditation ~]# echo "this is $var2"
    this is mysql
  •  전의 부호,\\뒤에 있 는 특수 기 호 는 특수 한 의 미 를 잃 고 일반 문자 로 변 합 니 다
  • [root@meditation ~]# echo $var2
    mysql
    [root@meditation ~]# echo \$var2
    $var2

    변수 삭제
    [root@meditation ~]# unset var2
    [root@meditation ~]# echo $var2
    
    [root@meditation ~]# 

    2.2 환경 변수
    bash 셸 에서 환경 변 수 는 두 가지 로 나 뉘 는데 전체 변수 와 부분 변수 이다.
  • 전역 변수: 셸 세 션 과 모든 하위 셸 을 볼 수 있 습 니 다
  • 부분 변수: 자신의 프로 세 스 에 만 있 습 니 다
  • 모든 전역 변수 보기
    [root@meditation ~]# env

    export 전역 변수 설정
    [root@meditation ~]# var4=xuegod4
    [root@meditation ~]# export var5=xuegod5
    [root@meditation ~]# cat ./test.sh 
    #!/bin/bash
    echo $var4
    echo $var5
    [root@meditation ~]# bash ./test.sh 
    
    xuegod5

    var 4 는 부분 변수 입 니 다. 스 크 립 트 를 실행 할 때 키 셸 을 다시 열 었 습 니 다. 이 안에서 얻 을 수 없 는 var 5 는 export 를 통 해 전역 변수 로 설정 되 어 있 으 며, 하위 셸 에서 도 볼 수 있 습 니 다.
    변 수 는 영구적 으로 유효 합 니 다.
    [root@meditation ~]# env |grep var5
    var5=xuegod5

    export 전역 변 수 를 설 정 했 지만 새로 연 xshell 연결 에 서 는 변 수 를 읽 을 수 없습니다. var 5 는 변 수 를 영구적 으로 유효 하 게 합 니 다. 정 의 된 변 수 를 설정 파일 에 쓸 수 있 습 니 다.
    로그 인 시스템 이나 ssh 연결 을 새로 열 어 bash 프로 세 스 를 시작 할 때 이 4 개의 프로필 을 불 러 옵 니 다.
    여러 파일 에 다른 값 을 설정 하면 마지막 으로 실 행 된 파일 을 기준 으로 합 니 다.
    프로필
    묘사 하 다.
    우선 순위
    /etc/profile
    시스템 전역 환경 및 로그 인 시스템 설정
    1
    /etc/bashrc
    bash 전역 사용자 정의 프로필, bash 정의 에 사용
    2
    /root/.bashrc
    사용자 정의 bash
    3
    /root/.bash_profile
    사용자 가 특정한 사용자 의 시스템 환경 을 단독으로 사용자 정의 합 니 다.
    4
    PATH 환경 변수 설정
    PATH 변 수 는 bash 찾기 명령 을 정의 하 는 디 렉 터 리 입 니 다. 제3자 프로그램 을 설치 한 후에 제3자 프로그램 bin 디 렉 터 리 를 이 PATH 경로 에 추가 하면 전역 에서 이 제3자 프로그램 을 호출 할 수 있 습 니 다.
    [root@meditation ~]# cat /opt/backup.sh 
    #!/bin/bash
    echo "Backup data is OK!"
    [root@meditation ~]# chmod +x /opt/backup.sh 
    [root@meditation ~]# backup.sh
    -bash: backup: command not found
    
    [root@meditation ~]# PATH=/opt/:$PATH
    [root@meditation ~]# backup.sh
    Backup data is OK!

    위 설정 파일 의 끝 에 PATH =/opt/: $PATH 를 추가 할 수도 있 습 니 다. source 에서 파일 을 다시 불 러 오 면 유효 합 니 다.
    2.3 위치 변수
  • $0 --- 대표 명령 자체
  • $1 - 9 --- - 받 아들 인 1 - 9 번 째 매개 변 수 를 대표 합 니 다. 10 이상 은 {} 으로 묶 어야 합 니 다. 예 를 들 어 ${10} 은 받 은 10 번 째 매개 변수
  • 를 대표 합 니 다.
  • $* - 모든 인 자 를 받 는 것 을 의미 하 며 모든 인 자 를 하나의 전체 로 간주 합 니 다
  • $@ - 받 은 모든 매개 변 수 를 대표 하여 매개 변 수 를 구별 합 니 다
  • $\# - 받 은 매개 변수 개수
  • [root@meditation ~]# cat print.sh 
    #!/bin/bash
    echo "   :$0"
    echo "     :$1"
    echo "     :$2"
    echo "     :$3"
    echo "    :$@"
    echo "      :$#"
    [root@meditation ~]# bash ./print.sh 1 2 3 4
       :./print.sh
         :1
         :2
         :3
        :1 2 3 4
          :4

    미리 정 의 된 변수
    일부 변 수 는 script 스 크 립 트 를 실행 할 때 설정 되 고 변경 할 수 없 지만 읽 기 전용 시스템 변 수 를 부 르 지 않 습 니 다. 특수 변수 나 미리 정 의 된 변수 라 고 부 릅 니 다.
    변량
    묘사 하 다.
    $*
    스 크 립 트 에 전 달 된 모든 인 자 를 하나의 문자열 로 표시 합 니 다.
    $#
    스 크 립 트 매개 변수 에 전 달 된 개수
    $$
    현재 프로 세 스 의 프로 세 스 번호 PID
    $?
    빔 마지막 명령 의 종료 상태, 0 은 오류 가 없 음 을 표시 하고, 다른 값 은 오류 나 기타 가 있 음 을 표시 합 니 다.
    $!
    백그라운드 에서 실행 중인 마지막 프로 세 스 의 프로 세 스 번호 PID
    3expr 명령 과 수학 연산 자
    수학 연산
    [root@meditation ~]# expr 3 \> 5
    0
    [root@meditation ~]# expr 6 \> 5
    1
    [root@meditation ~]# expr 6 \* 5
    30

    문자열 조작
    [root@meditation ~]# expr length "ni hao"    #    
    6
    [root@meditation ~]# expr substr "ni hao" 2 4     #     
    i ha

    연산 자
    속뜻
    ++ --
    점차 증가 하고 점차 줄 어 들 면, 앞 에 놓 을 수도 있 고 뒤에 놓 을 수도 있다.
    + - ! ~
    논리
    + - */%
    가감 곱 하기 나 누 기 나머지
    <<= >>=
    크기 를 비교 하 다
    == !=
    대등 하 다
    << >>
    왼쪽으로 이동, 오른쪽으로 이동.
    & , ^ , |
    혹은
    &&,||
    논리
    ? :
    조건 부 판단

    좋은 웹페이지 즐겨찾기