셸 프로그래밍의 셸 변수 학습 요약
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]#
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.