Linux 학습 6 편

1.  셸 의 변수 종류
Shell 의 변 수 는 환경 변수, 위치 변수, 미리 정 의 된 특수 변수 와 사용자 정의 변수 로 나 눌 수 있 습 니 다.
Shell 의 환경 변 수 는 Shell 미리 정 의 된 변수 로 시스템 운영 환경 을 설정 하 는 변수 이 고 환경 변 수 는 시스템 에서 통일 적 으로 이름 을 짓 습 니 다.일부 시스템 변수의 값 은 시스템 에서 설정 하고 일부 환경 변수의 값 은 사용자 가 지정 할 수 있 습 니 다.
환경 변수의 이름 은 대문자 로 구성 되 어 있 으 며 자주 사용 하 는 Shell 환경 변 수 는 다음 과 같 습 니 다.
HOME: 사용자 홈 디 렉 터 리 의 전체 경로 이름, cd $HOME 는 사용자 홈 디 렉 터 리 로 전환 할 수 있 습 니 다.
PATH: 윈도 우즈 아래 경로 와 유사 합 니 다. Shell 은 바 이 너 리 실행 파일 을 순서대로 찾 습 니 다.
       echo $PATH 는 현재 PATH 를 표시 하고 새로운 PATH 방법 을 추가 합 니 다 $PATH = $PATH: 새 PATH
TERM:  터미널 형식 echo $TERM
PS1:   프롬프트, 루트 사용 자 는 기본적으로 \ #, 일반 사용 자 는 기본적으로 $입 니 다.
SHELL: Shell 해석 기의 절대 경로
로그 인 사용자 이름
UID:  현재 사용자 UID   echo $UID
위치 변 수 는 명령 행 에 나타 난 매개 변수의 위치 에 따라 확 정 된 변수 입 니 다. 셸 프로그램 을 호출 하 는 명령 행 에서 매개 변수의 위 치 는 다음 과 같 습 니 다.
   $명령 하 다.  매개 변수 1   매개 변수 2  매개 변수
그 속 $0  대응 하 다  실 행 된 명령 명
      $1  대응 하 다  매개 변수 1
      $2  대응 하 다  매개 변수 2
      $3  대응 하 다  매개 변수
미리 정 의 된 특수 변 수 는 특수 한 의 미 를 가지 고 있 습 니 다. 사용 자 는 변경 할 수 없습니다. 모든 미리 정 의 된 변 수 는 '$' 기호 와 다른 기호 로 구성 되 어 있 습 니 다. 자주 사용 하 는 미리 정 의 된 특수 변 수 는 다음 과 같 습 니 다.
$\ #: 위치 매개 변수 개수 (Shell 스 크 립 트 이름 포함 하지 않 음)
$*:  위치 매개 변수 로 구 성 된 문자열
$!:   이전 배경 명령 에 대응 하 는 프로 세 스 번호
$?:   이전 명령 의 종료 상 태 는 10 진수 이 며, 0 으로 돌아 가면 실행 에 성공 한 것 을 의미 합 니 다.
$$:   현재 프로 세 스 번호 PID
요구: 변수 이름 은 알파벳 이나 밑줄 로 시작 하고 뒤에 임의의 수량의 알파벳, 숫자, 밑줄 을 긋 습 니 다.
합 법 적:name    SIZE    my_idea
두 개의 내 장 된 명령 declare 와 typeset 는 변 수 를 만 드 는 데 사용 할 수 있 습 니 다.명령 의 옵션 설정 을 통 해 변수의 생 성 자 를 설정 할 수 있 습 니 다.
변수 할당 과 참조
Shell 프로 그래 밍 에서 변 수 를 사용 할 때 미리 설명 할 필요 가 없 으 며 변수 이름 의 이름 은 다음 과 같은 규칙 을 따라 야 합 니 다.  #첫 번 째 문 자 는 알파벳 (a - z, A - Z) 이 어야 합 니 다.  #중간 에 빈 칸 없 음, 밑줄 사용 가능 ()  #문장 부 호 를 사용 할 수 없습니다.  #bash 의 키 워드 를 사용 할 수 없습니다. (help 명령 으로 키 워드 를 유지 할 수 있 습 니 다) 변수 에 값 을 부여 해 야 할 때 이렇게 쓸 수 있 습 니 다.   변수 이름 = 값  변 수 를 사용 하려 면 변수 이름 앞 에 $를 추가 하 십시오. (주의: 변 수 를 할당 할 때 "=" 양쪽 에 빈 칸 을 남 겨 서 는 안 됩 니 다) 
  
시스템 에서 unset 명령 을 제공 하면 변 수 를 삭제 할 수 있 습 니 다. 예 를 들 어 unset  name
변수의 할당 은 다섯 가지 가 있 습 니 다. read 명령 을 사용 하고 직접 할당 하 며 명령 행 인 자 를 사용 하고 명령 행 의 출력 결 과 를 사용 하여 파일 에서 읽 습 니 다.
read 명령 사용 read name
직접 할당 a = "hello world"  #등호 양쪽 에 모두 빈 칸 이 있어 서 는 안 된다.
명령 행 의 출력 결 과 를 사용 합 니 다. echo"A is:" $a
명령 행 매개 변수 할당 (이 할당 방법 은 매개 변수 가 자주 변화 하고 상호작용 이 필요 없 을 때 사용) 을 실행 할 때 뒤의 매개 변수 입 니 다.
파일 에서 데 이 터 를 읽 는 방식 은 대량의 데 이 터 를 처리 하 는 데 적합 하 며, 해당 데 이 터 를 파일 에 직접 기록 한 다음 스 크 립 트 를 실행 하면 됩 니 다.
보통 while 순환 을 통 해 한 줄 의 데 이 터 를 읽 습 니 다. 즉, 한 번 순환 하지 않 고 파일 에서 한 줄 의 데 이 터 를 읽 습 니 다. 파일 의 끝 을 읽 을 때 까지.
예 를 들 면:
#!/bin/bash
ls *.sh >execfile
while read LINE
do
chmod a+x $LINE
done이 스 크 립 트 는 while. do. done 구 조 를 사 용 했 습 니 다. 마지막 줄 은 파일 execfile 에서 데 이 터 를 읽 는 것 을 표시 합 니 다.while read LINE 은 매번 한 줄 의 데 이 터 를 반복 해서 읽 고 변수 LINE 에 값 을 부여 합 니 다.
 
문자열 을 포함 할 때 세 가지 인용 부 호 를 사용 해 야 하 는데, 각각 작은 따옴표, 작은 따옴표 와 작은 따옴표 이다.
전체 인용
1. mv "a ~file name.txt" another.txt 
이런 상황 에서 작은 따옴표 는 별 차이 가 없고 그들의 의 미 는 같다.
변수 교체
1. echo "The value of '${var}' is ${var}". 
이러한 상황 에서 하나의 변수 가 두 따옴표 로 묶 인 문장 에 사 용 될 때 그 내용 으로 대 체 됩 니 다.작은 따옴표 를 사용 할 때 변 수 는 바 뀌 지 않 습 니 다.그래서 작은 따옴표 가 더 강 한 인용 이 라 고 할 수 있다.위의 예 와 같은 출력 결 과 는:
1. The value of '${var}' is bbb. 
3. 명령 교체
1. var='uname -r' 
이렇게 하면 변수 $var 의 값 은 uname - r 의 출력 을 명령 하 는 것 입 니 다.
변수 교체 보다 더 고 급 스 러 운 것 은 일치 입 니 다. 예 를 들 어 ${f% jpg} 은 jpg 로 변수 f 를 뒤에서 일치 시 키 고 일치 하 는 부분 (즉 확장자) 을 제거 하 는 동시에 두 개의 백분 호 를 사용 할 때 최대 일치 방식 을 사 용 했 습 니 다. 예 를 들 어 "abcdabcd" 는 a * d 로 일치 할 때 최대 일치 하면 모든 8 글자 가 일치 합 니 다.최소 로 매 칭 할 때 는 4 개가 매 칭 된다.백분 번호 와 대응 하여 '\ #' 을 사용 하여 변 수 를 이전 에서 뒤로 일치 시 킬 수도 있 고 두 개 로 최대 일치 도 표시 할 수 있 습 니 다.
예 를 들다
1. #!/bin/bash  
2. for var in *.sh 
3. do  
4. echo "${var%sh}" 
5. done  
결 과 는 다음 과 같다.
1. test1.  
2. test2.  
3. test3.  
4. test.  
접미사 가 없어 졌 으 니 접미사 이름 을 수정 할 수 있 습 니 다.
1. #!/bin/bash  
2. for var in *.sh 
3. do  
4. mv "${var}""${var%sh}SH"  
5. done  
이렇게 소문 자 쉬 가 대문자 로 바 뀌 었 어 요.
 
echo
echo hello \ # 변수 참조 없 이 hello 문자열 일 뿐 입 니 다. echo $hello echo ${hello}   // "$hello" echo "${hello}" hello = "A B C D" echo $hello \ # A B C D echo "$hello" \ # A B C D 
echo '$hello' # $hello
 
 let
  let a=16+5

  :  ,    

좋은 웹페이지 즐겨찾기