Bash 스 크 립 트 의 함수 정의 와 호출
#!/bin/bash
out(){
echo "123"
}
[root@localhost class]# bash hanshu
[root@localhost class]#
위의 이 예 에서 저 는 스 크 립 트 에 함 수 를 썼 지만 호출 하지 않 았 기 때문에 이 스 크 립 트 를 실행 한 후에 출력 이 없습니다.다음은 함 수 를 어떻게 정의 하 는 지 말씀 드 리 겠 습 니 다.
함 수 는 함수 이름과 함수 체 (독립 기능 을 실현 할 수 있 는 셸 구문 블록) 두 부분 으로 구성 되 어 있 으 며, 형식 은:
function func_name {
}
또는:
func_name() {
}
메모: 함수 이름과 () 사이 에 공백 문 자 를 추가 할 수 없습니다.
이 두 가지 서로 다른 정의 방법 은 모두 함 수 를 정의 할 수 있 습 니 다. 다른 점 은 함수 이름 전의 'function' 명령 입 니 다. 이 명령 은 있 으 나 마 나 합 니 다.정의 함 수 는 반드시 스 크 립 트 에서 정의 하지 않 아 도 되 고 대화 형 환경 에서 정의 할 수 있 습 니 다. 예 를 들 어 명령 행 에 함수 이름 을 직접 입력 하여 정의 할 수 있 습 니 다. 예 를 들 어:
[root@localhost class]# out()
> {
> echo "123"
> }
[root@localhost class]# out
123
정의 할 때 하나의 함 수 는 '{' 로 시작 하여 '}' 으로 끝나 고 정의 가 완 료 된 후에 바로 이름 으로 이 함 수 를 호출 할 수 있 습 니 다."set"명령 을 사용 하여 자신 이 정의 하고 시스템 에 존재 하 는 함 수 를 볼 수 있 습 니 다. unset 명령 을 사용 하면 정 의 된 함 수 를 취소 할 수 있 습 니 다.주의해 야 할 것 은 현재 셸 에서 정 의 된 함 수 는 현재 셸 에서 만 사용 할 수 있 으 며, 닫 히 면 정 의 된 함수 가 사라 집 니 다.마찬가지 로 스 크 립 트 에서 정 의 된 함 수 는 스 크 립 트 가 닫 히 면서 사라 집 니 다. 예 를 들 어:
testEcho(){
echo " show "
}
[root@localhost class]# bash testfunction
[root@localhost class]# testEcho
bash: testEcho: ...
[root@localhost class]# source testfunction
[root@localhost class]# testEcho
show
이 예 에서 우 리 는 bash 를 사용 하여 스 크 립 트 를 실행 한 후에 스 크 립 트 에 'testEcho' 라 는 함 수 를 불 러 왔 지만 이 스 크 립 트 가 닫 히 면서 이 함 수 를 실행 할 때 오류 가 발생 했 습 니 다. 그 다음 에 저 는 'source' 명령 을 사용 하여 이 스 크 립 트 를 실행 한 후에 현재 셸 에서 스 크 립 트 에서 정 의 된 함 수 를 사용 할 수 있 습 니 다.이것 은 현재 셸 에서 스 크 립 트 내 함 수 를 사용 하 는 방법 입 니 다.
명령 처럼 함수 의 실행 에 도 하나의 반환 값 이 있 고 다음 과 같은 두 가지 로 나 눌 수 있 습 니 다.
첫 번 째 는 함수 의 실행 결과 의 반환 값 입 니 다. 예 를 들 어 함수 체 에서 일부 명령 이 출력 한 결과 입 니 다.
두 번 째 는 함수 의 상태 반환 값 입 니 다:
1. 함수 의 마지막 명령 의 실행 상태 반환 값;
2. 사용자 정의 종료 상태 코드:
return [n]
n: 0 - 255 (12 127 가능 한 한 사용 하지 않 음)
0: 오류 없 음 반환 표시
1 - 255: 오류 반환
메모: 다른 프로 그래 밍 언어 와 마찬가지 로 함수 가 실 행 될 때 return 명령 을 만 났 을 때 함수 의 명령 어 를 모두 실 행 했 든 안 했 든 함 수 를 즉시 종료 합 니 다.하나의 함 수 는 호출 될 때 부터 return 명령 이나 모든 문 구 를 실행 하고 나 서 야 종 료 됩 니 다.
함 수 를 호출 할 때 우 리 는 일부 매개 변 수 를 입력 할 수 있 습 니 다. 방법 은 함 수 를 호출 할 때 함수 이름 뒤에 파 라 메 터 를 직접 쓰 고 빈 칸 으로 분리 하 는 것 입 니 다. 예 를 들 어 funcname arg1 arg2 ....함수 체 에 서 는 $1, $2,.. 등 위치 변 수 를 사용 하여 외부 에서 이 함 수 를 호출 할 때 이 함수 가 제공 하 는 매개 변 수 를 스 크 립 트 와 마찬가지 로 $* 또는 $@ 방식 으로 모든 위치 변 수 를 참조 하거나 $\# 를 사용 하여 함수 로 전달 하 는 매개 변수 개 수 를 계산 할 수 있 습 니 다.예 를 들 면 다음 과 같다.
#!/bin/bash
out(){
echo $@
}
out a b c # , “a b c ”
[root@localhost class]# bash funcdiaoyong
a b c
다음으로 전송:https://blog.51cto.com/11142243/1927827
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.