Bash 스 크 립 트 의 함수 정의 와 호출

3379 단어
스 크 립 트 에 반복 되 고 변 함 없 는 코드 를 패키지 하여 적당 한 장면 에서 호출 하여 실행 합 니 다.프로그래머 는 이러한 봉 인 된 코드 를 기능 체 라 고 부 르 거나 모듈 이 라 고도 부 르 며 함수 라 고도 부른다.이렇게 보면 순환 과 유사 하지 않 습 니까? 순환 도 여러 번 코드 를 실행 하 는 것 을 편리 하 게 하기 위해 서 입 니 다. 함 수 는 한 무더기 의 코드 를 함께 쓰 고 이름 을 짓 고 이 코드 가 필요 할 때 함수 의 이름 만 쓰 면 됩 니 다.셸 스 크 립 트 프로 그래 밍 에서 함 수 는 여러 개의 셸 명령 으로 구 성 된 구문 블록 으로 함수 안의 내용 과 셸 프로그램 형식 이 일치 합 니 다.다른 점 은 셸 코드 가 직접 실 행 될 수 있 고 함수 의 내용 은 독립 적 으로 실 행 될 수 없 으 며 호출 될 때 만 실 행 됩 니 다.예 를 들 면:
#!/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

좋은 웹페이지 즐겨찾기