셸 프로그래밍의 셸 변수 학습 요약

6373 단어
1. 변수 조작
A. 변수 표시, 인쇄 구문: echo $varB.변수 설정 구문: var=value
변수의 설정 규칙: 1. 변수의 양쪽 끝에 빈칸을 직접 연결할 수 없습니다. 변수 이름은 자모와 숫자 때문일 수 있지만 처음에는 숫자 3. 더블 따옴표 안의 특수 문자, 예를 들어 $등 원래의 특성을 유지할 수 없습니다.

   [root@bogon ~]# var="lang is $LANG" 
  
[root@bogon ~]# echo %var
root@bogon ~]# echo $var
lang is zh_CN.UTF-8

1. 따옴표 안의 특수 문자는 일반 문자만

   [root@bogon ~]# 
  
[root@bogon ~]# var='lang is $LANG';echo $var
lang is $LANG

2. 일련의 명령에서 다른 명령을 통해 제공하는 정보가 필요합니다.'명령'또는 &(명령)을 인용할 수 있습니다. 예를 들어 지령1은 실행하는 과정에서 지령2의 값을 먼저 알아야 하지만 지령1은 일련의 지령에 있습니다.

   [root@bogon ~]# uname -r 
  
2.6.18-371.el5
[root@bogon ~]# cd /lib/modules/$(uname -r)/kernel
[root@bogon kernel]#

3. 변수의 누적

   [root@bogon kernel]# var=${var}yes 
  
[root@bogon kernel]# echo $var
lang is $LANGyes

4. 배열 변수 설정 및 읽기

   [root@bogon ~]# array[1]=a 
  
[root@bogon ~]# array[2]=b
[root@bogon ~]# array[3]=c
[root@bogon ~]# echo ${array[1]}
a
[root@bogon ~]# echo ${array[2]}

[root@bogon ~]# echo ${array[3]}
c

C. 변수 취소(unset) 구문: unset var
D. 변수 보기(set) 구문:set
비교적 중요한 몇 가지 사용자 정의 변수 HISTFILE: 역사 기록 저장 위치 MAILCHECK: 메일박스를 몇 초 동안 스캔해서 새 메일 PS1: 알림부호 설정 $: 현재 이 셸의 PID가 있는지 확인합니까?:방금 명령을 집행한 답전 코드.0이 정확하고 0이 아닌 경우 오류
예:
 
  

HISTFILE:
MAILCHECK: ,
PS1:
$: shell PID
?: 。0 , 0

E. 변수 키보드 읽기(read) 구문: read [-pt] var 옵션 및 매개 변수: -p: 프롬프트 정보 - t: 입력을 기다리는 다음 설명 예:
 
  
[plain] view plaincopyprint?
[root@bogon ~]# read atest 
this is a test 
[root@bogon ~]# echo $atest 
this is a test 
[root@bogon ~]# read -p "please input.. " attest   
please input.. hello world      =>  
[root@bogon ~]# echo $atest 
hello world 
[root@bogon ~]# read -p "please input.. " -t 5  atest 
please input..  =>5  
[root@bogon ~]#  
[root@bogon ~]# echo $atest 
hello world

F. 변수 성명(declare) 문법: declare [-aixr] var 옵션과 파라미터 declare 이후 아무런 내용도 받지 않습니다. 모든 변수를 조회하는 것을 의미합니다. set과 일치합니다. - a: 뒤에 있는variable라는 변수를 수조(array) 형식으로 정의합니다. - i: 뒤에 있는variable의 변수를 정수 숫자(integer) 형식으로 정의합니다. - x: 사용법은 export와 마찬가지로 뒤에 있는variable를 환경 변수로 바꿉니다.++x: 환경 변수를 사용자 정의 변수 - r: 변수를 readonly 형식으로 설정합니다. 이 변수는 내용을 변경할 수 없고 unset도 할 수 없습니다. (로그아웃 후 로그인해야 다시 로그인할 수 있습니다.) 예를 들어 다음과 같습니다.

   [plain] view plaincopyprint? 
  
[root@bogon ~]# echo $sum 
100+50+10 =>  
[root@bogon ~]# declare -i sum=100+50+10  
[root@bogon ~]# echo $sum 
160 => int  
[root@bogon ~]# declare -x sum 
[root@bogon ~]# export | grep sum 
declare -ix sum="160" =>  
[root@bogon ~]# declare +x sum 
[root@bogon ~]# export | grep sum= >  
[root@bogon ~]# declare -r sum;sum=test 
bash: sum: readonly variable =>  

G. 변수 내용 삭제 문법 ${var#/key}: 키에 맞는 가장 짧은 ${var#/key}: 키에 맞는 가장 긴 ${var%/key}를 삭제합니다: 키에 맞는 가장 짧은 ${var%%/key}: 키에 맞는 가장 짧은 예를 뒤에서 앞으로 삭제합니다: ${var#/key}

   [plain] view plaincopyprint? 
  
[root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path#/*:}        =>key *.(* ) 
/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 

예: ${var##/key}

   [plain] view plaincopyprint? 
  
[root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path##/*:} 
/root/bin 

H. 변수 내용 바꾸기 구문: ${var/이전 문자열/새 문자열}: 조건에 맞는 첫 번째 문자열 바꾸기 ${var//이전 문자열/새 문자열}: 조건에 맞는 모든 문자열 바꾸기 예: ${var/이전 문자열/새 문자열}

   [plain] view plaincopyprint? 
  
root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path/sbin/SBIN} 
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 

예: ${var//이전 문자열/새 문자열}

   [plain] view plaincopyprint? 
  
[root@bogon ~]# path=${PATH};echo $path 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin 
[root@bogon ~]# echo ${path//sbin/SBIN} 
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/usr/X11R6/bin:/root/bin 

2. 환경 변수 일반 변수는 국부 변수로 이해할 수 있다. 환경 변수는 전역 변수로 이해할 수 있다. 로그인에 성공한 bashshshell은 하나의 프로세스이다. 이 상황에서 새로운 SHELL을 열면 그의 하위 프로세스이다. 하위 프로세스는 부모 프로세스의 사용자 정의 변수를 얻을 수 없지만 부모 프로세스를 얻을 수 있는 환경 변수 A. 환경 변수 내보내기(export) 문법: export varB.환경 변수 보기(env) 문법: env가 비교적 중요한 몇 가지 환경 변수 HOME: 사용자를 대표하는 메인 폴더 SHELL: 현재 사용하고 있는 셸이 어떤 프로그램인지, 내가 지금 사용하고 있는 것은/bin/bashHISTSIZE: 역사 기록 최대 저장소 개수MAIL:mail 명령 시스템이 편지를 받을 때 시스템이 읽는 사서함 파일PATH: 실행 파일 찾기 경로 LANG: 언어 정보 RANDOM: 무작위 변수 변수(0~32767) 3.프롬프트의 설정(PS1) 변수 PS1='[\u@\h\W]\$'는 명령 프롬프트의 표시 형식을 기록합니다.[root@bogon~]# 기호 의미\d: "Mon Feb 2"\H와 같은 [월일]의 날짜 형식을 표시할 수 있습니다.\h: 호스트 이름이 첫 번째 소수점 앞에 있는 이름만\t: 표시 시간, 24시간 형식의 [HH:MM:SS]\T: 표시 시간, 12시간 형식의 [H:MM:SS]\A: 표시 시간, 24시간 형식의 [HH:MM]\@: 표시 시간, 12시간 형식의 [am/pm] 형식\u: 현재 사용자의 계정 이름, 예를 들어 [root].v:BASH의 버전 정보, 예를 들어 조고의 테스트 메인보드는 3.2.25(1)이고 [3.2]에 표시된\w: 완전한 작업 디렉터리 이름, 루트 디렉터리에서 쓴 디렉터리 이름만 가져옵니다.그러나 집 목록은 ~로 대체된다.\W:basename 함수를 사용하여 작업 디렉토리 이름을 가져오므로 마지막 디렉토리 이름만 나열됩니다.\#:다음 명령이 실행되었습니다.\$:프롬프트 문자, 루트일 경우 프롬프트 문자는 #이고 그렇지 않으면 $예:

   [root@bogon ~]# PS1='[\u@\h\A \W \#]\$ ' 
  
[root@bogon23:45 ~ 82]#

좋은 웹페이지 즐겨찾기