1shell 기초, 변수, 연산 자
운영 체제 의 가장 바깥쪽 에서 사용자 와 직접 대 화 를 하 는 명령 해석 기 입 니 다.
우리 가 입력 한 명령 은 컴퓨터 가 인식 되 지 않 을 때 우리 가 번역 할 수 있 도록 도와 주 는 프로그램 이 필요 하 다. 컴퓨터 가 식별 할 수 있 는 바 이 너 리 프로그램 이 되 는 동시에 컴퓨터 가 생 성 한 결 과 를 우리 에 게 되 돌려 주어 야 한다.
셸 스 크 립 트, 바로 우리 입 니 다. 원래 의 Liux 명령 이나 문구, 그리고 관련 문법 조합 을 한 파일 에 넣 은 다음 이 프로그램 파일 을 통 해 실 행 될 때 이 프로그램 은 셸 스 크 립 트 라 고 말 합 니 다.
프로 그래 밍 언어 분류
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 변수
변 수 는 셸 이 데 이 터 를 전달 하 는 방법 이다.
우 리 는 변 수 를 용기 로 사용 할 수 있 습 니 다. 변 수 를 통 해 메모리 에 데 이 터 를 저장 할 수도 있 고 스 크 립 트 실행 에서 저 장 된 데 이 터 를 수정 하고 접근 할 수도 있 습 니 다.
역할 에 따라 분류 하 다
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 위치 변수
[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
연산 자
속뜻
++ --
점차 증가 하고 점차 줄 어 들 면, 앞 에 놓 을 수도 있 고 뒤에 놓 을 수도 있다.
+ - ! ~
논리
+ - */%
가감 곱 하기 나 누 기 나머지
<<= >>=
크기 를 비교 하 다
== !=
대등 하 다
<< >>
왼쪽으로 이동, 오른쪽으로 이동.
& , ^ , |
혹은
&&,||
논리
? :
조건 부 판단
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.