Shell 의 함수 에 대하 여 말씀 드 리 겠 습 니 다.
1.Shell 함수 의 정의 형식
function 키 워드 를 가지 고 function fun 을 사용 할 수 있 습 니 다.name()로 정의 할 수도 있 고 함수 명 funname()정의.매개 변 수 를 가 져 올 수 없습니다.함수 명 은 유일 해 야 합 니 다.매개 변 수 를 전달 할 수 있 도록
$1,$2,...,$* ,$@
을 사용 하여 인 자 를 가 져 올 수 있 습 니 다.코드 읽 기 에 편리 하도록 function 키 워드 를 사용 하여 함 수 를 정의 하 는 것 을 권장 합 니 다.정의 형식 은 다음 과 같 습 니 다.
function_name()
{
list of commands
[ return value ]
}
#
function function_name()
{
list of commands
[ return value ]
}
함수 반환 값,return 문 구 를 명시 적 으로 증가 할 수 있 습 니 다.추가 하지 않 으 면 마지막 명령 실행 결 과 를 되 돌려 줍 니 다.Shell 함수 반환 값 은 정수 일 수 있 습 니 다.일반적으로 함수 실행 성공 여 부 를 표시 하고 0 은 성공 을 표시 하 며 다른 값 은 실 패 를 표시 합 니 다.만약 return 의 다른 데이터,예 를 들 어 문자열 을 사용 하면 오류 알림 을 받 을 수 있 습 니 다."numeric argument required".
함수 가 문자열 을 되 돌려 야 한다 면 함수 의 계산 결 과 를 받 을 수 있 는 변 수 를 정의 할 수 있 습 니 다.스 크 립 트 는 필요 할 때 이 변 수 를 방문 하여 함수 반환 값 을 얻 을 수 있 습 니 다.
#!/bin/bash
funcWorld()
{
echo "world"
}
res=`funcWorld`
echo "hello $res"
실행 결과:hello world
2.Shell 함수 호출 방식
스 크 립 트 에서 함 수 를 호출 하려 면 함수 이름 만 제시 해 야 합 니 다.예 를 들 어 소절'1.Shell 함수 의 정의 형식'의 함수 funcWorld()를 호출 하려 면 함수 이름 funcWorld 만 제시 하고 함수 이름 은 뒤꿈치 괄호()가 필요 없습니다.셸 함수 의 호출 방식 은 셸 명령 과 매우 비슷 하 다.
3.Shell 함수 반환 값 가 져 오기
$?
를 사용 하여 가 져 옵 니 다.$?
이전 명령 의 종료 상 태 를 가 져 올 수도 있 고 함수 의 반환 값 을 가 져 올 수도 있다.셸 함수 의 호출 은 셸 명령 의 실행 과 매우 비슷 하 다 는 것 을 알 수 있다.
#!/bin/bash
add()
{
varAddRes=`expr $1 + $2`
return $varAddRes
}
add 1 2 # ,
echo $?
실행 결과:3
4.Shell 함수 에서 부분 변 수 를 정의 합 니 다.
셸 함수 에서 정의 하 는 변 수 는 기본적으로 global 입 니 다.그 역할 영역 은'함수 가 호출 될 때 변 수 를 정의 하 는 곳'에서 시작 하여 셸 이 끝나 거나 삭 제 된 곳 이 표 시 될 때 까지 입 니 다.함수 정의 변 수 는 local 키 워드 를 사용 하여 local 로 정의 할 수 있 습 니 다.그 역할 영역 은 함수 에 국한 되 고 같은 이름 의 local 변 수 는 global 변 수 를 차단 합 니 다.그러나 함수 의 인 자 는 local 입 니 다.
#!/bin/bash
function test()
{
local localVar=dablelv #
}
test
echo $localVar #
5.Shell 함수 사용 시 사전 설명 이 필요 합 니까Shell 함 수 는 사용 하기 전에 반드시 정의 해 야 합 니 다.설명 이 없습니다!일반적인 방법 은 함수 정 의 를 스 크 립 트 시작 부분 에 두 는 것 이다.
6.Shell 함수 삭제
변 수 를 삭제 하 는 것 처럼 함수 삭제 도 unset 명령 을 사용 할 수 있 지만
-f
옵션 을 추가 하려 면 다음 과 같 습 니 다.
unset -f function_name
7.명령 행 에서 함수 사용명령 행 에서 함 수 를 사용 하려 면 명령 행 에서 함수 의 정 의 를 실행 해 야 합 니 다.명령 행 에서 셸 함 수 를 직접 정의 하 는 데 단점 이 있 습 니 다.셸 을 종료 하면 함수 정의 가 실 효 됩 니 다.홈 디 렉 터 리 에 함 수 를 정의 할 수 있 는.bashprofflee 파일 이나 모든 사용자 에 게 적용 되 는/etc/profile 파일 입 니 다.로그 인 할 때마다 profflee 파일 이 호출 되 고 명령 프롬프트 뒤에 함수 이름 을 입력 하면 바로 호출 할 수 있 습 니 다.
메모:파일 을 수정 한 후 즉시 효력 이 발생 하려 면 실행
source /etc/profile
또는source ~/.bash_profile
이 필요 합 니 다.그렇지 않 으 면 다음 에 다시 로그 인 할 때 만 효력 이 발생 합 니 다.이상 은 셸 의 함수 에 대한 상세 한 내용 입 니 다.셸 함수 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.