Linux Shell 의 Shell 변수
셸 변 수 는 약 한 형식 으로 사용자 정의 변 수 를 지원 합 니 다.
셸 을 실행 할 때 세 가지 변수 가 동시에 존재 합 니 다.
1) 부분 변수
부분 변 수 는 스 크 립 트 나 명령 에서 정의 합 니 다. 현재 셸 인 스 턴 스 에서 만 유효 합 니 다. 다른 셸 이 시작 하 는 프로그램 은 부분 변 수 를 방문 할 수 없습니다.
2) 환경 변수
모든 프로그램 은 셸 이 시작 하 는 프로그램 을 포함 하여 환경 변 수 를 방문 할 수 있 으 며, 일부 프로그램 은 환경 변 수 를 통 해 정상 적 인 운행 을 보장 해 야 합 니 다.필요 할 때 셸 스 크 립 트 도 환경 변 수 를 정의 할 수 있 습 니 다.
3) 셸 변수
셸 변 수 는 셸 프로그램 이 설정 한 특수 변수 입 니 다.셸 변수 중 일 부 는 환경 변수 이 고 일 부 는 부분 변수 입 니 다. 이런 변 수 는 셸 의 정상 적 인 운행 을 보장 합 니 다.
2. 변수 정의
변 수 를 정의 할 때 변 수 는 달러 기호 ($) 를 추가 하지 않 습 니 다. 예 를 들 어:
variableName="value"
변수 이름과 등호 사이 에 빈 칸 이 있어 서 는 안 됩 니 다. 이것 은 당신 이 잘 아 는 모든 프로 그래 밍 언어 와 다 를 수 있 습 니 다.또한 변수 이름 의 이름 은 다음 과 같은 규칙 을 따라 야 합 니 다.3. 사용 변수
정 의 된 변 수 를 사용 합 니 다. 변수 이름 앞 에 달러 기호 ($) 를 추가 하면 됩 니 다. 예 를 들 어:
일반 텍스트 새 창 복사
your_name="mozhiyan"
echo $your_name
echo ${your_name}
4. 변수 만 읽 기
readonly 명령 을 사용 하면 변 수 를 읽 기 전용 변수 로 정의 할 수 있 으 며, 읽 기 전용 변수의 값 은 변경 할 수 없습니다.
다음 의 예 는 읽 기 전용 변 수 를 변경 하려 고 시도 하 였 으 나 결 과 는 잘못 되 었 습 니 다.
#!/bin/bash
myUrl="http://see.xidian.edu.cn/cpp/shell/"
readonly myUrl
myUrl="http://see.xidian.edu.cn/cpp/danpianji/"
스 크 립 트 를 실행 합 니 다. 결 과 는 다음 과 같 습 니 다.
/bin/sh: NAME: This variable is read only.
5. 변수 삭제
unset 명령 을 사용 하면 변 수 를 삭제 할 수 있 습 니 다.문법:
unset variable_name
변수 가 삭 제 된 후 다시 사용 할 수 없습니다.unset 명령 은 읽 기 전용 변 수 를 삭제 할 수 없습니다.
예 를 들 어:
#!/bin/sh
myUrl="http://see.xidian.edu.cn/cpp/u/xitong/"
unset myUrl
echo $myUrl
위의 스 크 립 트 는 출력 이 없습니다.
6. 특수 변수
특수 변수 목록
변량
속뜻
$0
현재 스 크 립 트 의 파일 이름
$n
스 크 립 트 나 함수 에 전달 되 는 인자 입 니 다.n 은 하나의 숫자 로 몇 번 째 인 자 를 나타 낸다.예 를 들 어 첫 번 째 인 자 는 $1 이 고 두 번 째 인 자 는 $2 입 니 다.
$#
스 크 립 트 나 함수 에 전달 되 는 매개 변수 갯 수 입 니 다.
$*
스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
$@
스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.따옴표 (") 에 포 함 될 때 $* 와 조금 다 르 면 아래 에 설명 하 겠 습 니 다.
$?
이전 명령 의 종료 상태 나 함수 의 반환 값 입 니 다.
$$
현재 Shell 프로 세 스 ID 입 니 다.셸 스 크 립 트 에 대해 서 는 이 스 크 립 트 가 있 는 프로 세 스 ID 입 니 다.
명령 행 인자
스 크 립 트 를 실행 할 때 스 크 립 트 에 전 달 된 매개 변 수 를 명령 행 매개 변수 라 고 합 니 다.명령 행 인 자 는 $n 으로 표시 합 니 다. 예 를 들 어 $1 은 첫 번 째 인 자 를 표시 하고 $2 는 두 번 째 인 자 를 표시 하 며 순서대로 유추 합 니 다.
#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
ZP1015@ubuntu:~/myshell$ ./hello.sh ZP1015 SCUT
File Name: ./hello.sh
First Parameter : ZP1015
First Parameter : SCUT
Quoted Values: ZP1015 SCUT
Quoted Values: ZP1015 SCUT
Total Number of Parameters : 2
그 $@ 과 $* 는 어떤 차이 가 있 습 니까?
$* 와 $@ 은 함수 나 스 크 립 트 에 전 달 된 모든 인 자 를 표시 합 니 다. 작은 따옴표 (") 에 포함 되 지 않 을 때" $1 "," $2 "," $n "으로 모든 인 자 를 출력 합 니 다.그러나 두 따옴표 (") 에 포 함 될 때" $* "는 모든 인 자 를 하나의 전체 로 하고" $1 $2... $n "형식 으로 모든 인 자 를 출력 합 니 다."$@" 은 각 인 자 를 분리 하여 "$1", "$2", "$n" 형식 으로 모든 인 자 를 출력 합 니 다.아래 의 예 는 $* 와 $@ 의 차 이 를 뚜렷하게 볼 수 있 습 니 다.
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
echo "print each param from \$*"
for var in $*
do
echo "$var"
done
echo "print each param from \$@"
for var in $@
do
echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done
ZP1015@ubuntu:~/myshell$ ./test.sh 1 2 3 4 5
$*= 1 2 3 4 5
"$*"= 1 2 3 4 5
$@= 1 2 3 4 5
"$@"= 1 2 3 4 5
print each param from $*
1
2
3
4
5
print each param from $@
1
2
3
4
5
print each param from "$*"
1 2 3 4 5
print each param from "$@"
1
2
3
4
5
7. 퇴장 상태
$? 이전 명령 의 종료 상 태 를 가 져 올 수 있 습 니 다.종료 상태 란 이전 명령 이 실 행 된 후 되 돌아 오 는 결과 입 니 다.종료 상 태 는 숫자 입 니 다. 일반적으로 대부분의 명령 이 성공 하면 0 으로 돌아 가 고 실패 하면 1 로 돌아 갑 니 다.그러나 다른 값 으로 돌아 가 다양한 종류의 오 류 를 표시 하 는 명령 도 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
변수 이름 정보코드를 쓸 때는 반드시 변수를 사용해야 한다 나는 그 변수의 명명이 매우 중요하다고 생각한다 아직 현장에서의 경험이 없기 때문에, 이렇게 말하는 것이 비교적 좋다면 ####$namae//모드 1 이것에 관해서는 틀려...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.