삽입 식 학습 노트 (11) -- 셸 스 크 립 트 프로 그래 밍

한 마디 로 셸 스 크 립 트 프로 그래 밍 = 기본 명령 + 변수 + 어구특별한 점 이 없 는 것 같 으 니 분석 해 보 세 요!
이 장의 내용
  • 셸 과 셸 스 크 립 트 구분
  • 셸 변수의 유형
  • 셸 문장
  • 함수
  • 1. 셸 은 무엇 입 니까?그것 은 셸 스 크 립 트 와 어떤 차이 가 있 습 니까?
    셸: 영어 단어 셸 은 '조개' 로 직역 할 수 있 습 니 다.조 개 는 동물 이 외적 으로 보호 하 는 도구 이다.이렇게 보면 리 눅 스 의 셸 은 리 눅 스 커 널 의 외부 보호 도구 이 고 사용자 와 커 널 간 의 상호작용 을 완성 하 는 것 을 책임 진다.총괄 적 으로 셸 은 Liux 명령 집합 의 총칭 으로 명령 행 에 속 하 는 인간 인터페이스 입 니 다.
    셸 스 크 립 트: 셸 스 크 립 트 언어 는 해석 형 언어 이 고 셸 스 크 립 트 는 본질 적 으로 셸 명령 의 질서 있 는 집합 입 니 다.
    sell 명령 은 sell 스 크 립 트 의 일부분 이 고 sell 스 크 립 트 는 sell 명령 을 바탕 으로 더욱 추상 적 이 라 고 할 수 있다.
    셸 변수
    셸 은 사용자 가 변 수 를 만들어 데 이 터 를 저장 할 수 있 지만 데이터 형식 (정형, 문자, 부동 소수점) 은 지원 되 지 않 습 니 다. 변 수 를 부여 하 는 값 을 모두 문자열 문자 로 해석 합 니 다.
    보통 다음 네 가지 유형 변수 로 나 뉜 다.
    1) 사용자 정의 변수: 말 그대로 로 컬 변수 라 고도 하 며 현재 셸 에서 만 적 용 됩 니 다.
    2) 위치 변수 즉 명령 행 인자:  변수 에 저 장 된 것 은 시스템 운영 환경 과 관련 된 데이터 3) 미리 정 의 된 변수 입 니 다. Bash 에서 정 의 된 변 수 는 변수 이름 을 사용자 정의 할 수 없고 변수 역할 도 고정 되 어 있 습 니 다.
    4) 환경 변수: 스 크 립 트 에 매개 변수 나 데 이 터 를 전달 하 는 데 사 용 됩 니 다. 변수 이름 은 사용자 정의 할 수 없고 변수 역할 은 고정 되 어 있 습 니 다.
           
             1)  shell            ,     
        		$ COUNT=1
    	 2)      :     $ 
    		$ echo $HOME 
    	 3) Linux Shell/bash      
    		$Y=y
    		$ X=$Y
    		$ echo $X 
    		y	 
    	 4)   unset          
    		$ Z=hello 
    		$ echo $Z 
    		hello 
    		$ unset Z 
    		$ echo $Z 
        
    	 $0            ,       
    	 $1,$2,……$9                  
    	 $#             
    	 $@            :“$1,$2,……$9”
    	 $?               
    	 $*            :“$1,$2,……$9”
    	 $$            ID 
      shell     
    	 HOME: /etc/passwd            
    	 IFS:Internal Field Separator,      ,tab    
    	 PATH :shell    
    	 PS1,PS2:     ($)      (>) 
    	 TERM:    ,    vt100,ansi,vt200,xterm  

    3. 셸 프로그램의 문장
    셸 프로그램 은 0 또는 여러 개의 셸 문장 으로 구성 되 어 있다.셸 문 구 는 세 가지 유형 을 포함한다. 설명 성 문, 기능 성 문 과 구조 성 문 구 를 포함한다.
  • 설명 문:     \ # 번호 로 이 줄 이 끝 날 때 까지 설명 되 지 않 고 실행 합 니 다
  • 기능 성 문장:      임의의 셸 명령, 사용자 프로그램 또는 기타 셸 프로그램.
  • 구조 적 문장:     조건 테스트 문, 다 중 분기 문, 순환 문, 순환 제어 문 등.   
  • 【1】                
    	                ,         ,              . 
    	  #            ,       .   :
    		#! /bin/sh 
    		#	     ------>   OS      shell        
    		#      
    		#
    		command_1 
    		command_2                  # command_2     
    		……
    		#         
    		command_m
    		……
    		command_n                  # commandn_     
    		……
    
    【2】       
         (1)        (  )
    	read         ,          ,    :
           		read  var
                      var
          		read  var1  var2  var3
                       (word)  var1,        var2, ……               .
    	    read          ,          ,              。
         (2)     
    	 # example1  for  read
    	 echo  "Input  your  name: \c"
    	 read  username
    	 echo  "Your name is  $username"
    
    	 #example2  for  read
    	 echo "Input  date  with  format  yyyy  mm dd: \c"
    	 read  year  month  day
    	 echo  "Today  is  $year/$month/$day,  right?"
    	 echo  "Press  enter  to  confirm  and  continue\c"
    	 read  answer
    	 echo "I  know  the  date,  bye!"
         (3) expr  
    	       expr             ,   (+)、 (-)、 (\*)、  (/)   (%)   。
    	   :
      		$ expr  12  +  5  \*  3                 *       
      		27
      		$ expr  3  -  8  /  2
      		-1
    
    		$ num=9
      		$ sum=`expr  $num  \*  6 `                      
    
      		$ echo  $sum
      		54

    구조 적 인 문 구 는 조건 테스트 문, 다 중 분기 문, 순환 문, 순환 제어 문 등 으로 나 눌 수 있다.여기 서 일일이 예 를 들 지 않 고 단지 이 문장의 사용 방법 을 소개 할 뿐이다.
        (1)    
    	 if…then…fi
    	     :
          	    		if       
           	   			then     
             		fi     
    	1)       ,           ;     if  ,    fi     。 
    	2)if fi          ,       ;
    	3)            ,        。
        (2) if…then…else…fi
    	       :
            	 if         
          	   	 then    1
            	 else     2
            	 fi
    	        ,       1    ,    if  ;        2    ,    if  .
    	   :          ,        .
        (1)       
    	 case…esac 
        		      case        ,         .      :
         		case           in
                		  1)
                           		   1
                            	;;
                		  2 |   3)   
                           		   2
                            	;;
                 		……
                		  n)
                           		   n
                            	;;
        		esac
    	 :
    	   1)case           
    	   2)            ,      
    	   3)           “|”  
    	   4)             ,  case  
    	   5)   n     *         
    	   6)            
        (1)    for
    	 1)           ,  for                。 
    	            do done   。   :                
    	 	for         in      
              	    do
                    	         
                   	    done
    	 2)              ,        ,             .  
    	                   .             ,                 。
             3)                  ,    for      “in     ”   。
    【1】    while   
        (1)     :
                      while          
                            do
                                  
                            done
    	1)while                 ,    ,            ,
    	                 ,     ,                。
    	2)while                           。
    【2】      
         (1) break   continue 
      		break  n     n ;  
    		continue                      ,  
    	 	continue  n     n            .
    
    	  .    prog7    :
           	   		prog7                …
    	       ,    1~10 ,          。

    함수
    셸 함 수 는 과정 을 향 해 함수 의 정의 와 호출 측면 에서 볼 때.
    함수 호출 형식: 방식 1: valuename=`function_name  [arg 1 arg 2...] ` 함수 의 모든 표준 출력 은 주 프로그램의 변수 방식 2: function 에 전달 되 었 습 니 다.name  [arg1  arg2  …  ]echo   $?
    함수 의 반환 상태 가 져 오기
    실례:
    	check_user( )    {  #          
    	 	 user=`who  |  grep  $1 | wc -l`
            	if [ $user –eq 0 ]
           	 	then
                   		return  0       #       
            	else
                  	        return  1       #      
            	fi
    	}
    	while  true         # MAIN, Main, main:   program  begin  here
    	do
    		echo  "Input username: \c"
    		read   uname
    		check_user  $uname       #     ,      uname
    		if [ $? –eq  1 ]                 # $?      
    		then	echo  "user  $uname  online"
    		else	echo  "user  $uname  offline"
    		fi
    	done

    PS: 함수 에 정 의 된 변 수 는 기본적으로 전역 적 입 니 다. (스 크 립 트 의 다른 모든 곳 에서 이 변 수 를 방문 할 수 있 습 니 다) 변 수 를 설명 하 는 역할 영역 에 만 접근 하려 면 Local 설명 을 추가 해 야 합 니 다.
    Local   variable_name =value

    좋은 웹페이지 즐겨찾기