Shell 함수 의 정의, 실행, 전송 및 재 귀 함수
2897 단어 shell
Bash(Bourne Again 셸) 도 다른 프로 그래 밍 언어 와 마찬가지 로 함 수 를 지원 합 니 다. 일반적으로 대형 스 크 립 트 를 작성 하 는 데 필요 합 니 다. 셸 스 크 립 트 프로그램 을 하나의 기능 이 상대 적 으로 독립 된 코드 블록 으로 나 누 어 코드 의 모듈 화 를 더욱 잘 하고 구조 가 뚜렷 하 며 프로그램의 코드 량 을 효과적으로 줄 일 수 있 습 니 다.그러나 bash 는 해석 적 인 언어 로 서 bash 가 프로 그래 밍 능력 에 있어 서 제공 하 는 지원 은 다른 컴 파일 적 인 언어 (예 를 들 어 C 언어) 처럼 완선 되 지 않 고 집행 효율 도 매우 낮 을 것 이다.
셸 함수 의 정의, 실행 및 전달
정의.
서식 1
function name() {
Command sequence( );
}
서식 2
name() {
Command sequence( );
}
function name()
정 의 를 가 져 올 수도 있 고 직접 name()
정의 할 수도 있 으 며 어떠한 매개 변수 도 가지 고 있 지 않다. 집행 하 다.
name;
함수 이름 을 직접 사용 하면 어떤 함 수 를 호출 할 수 있다.
전달 매개 변수
#!/bin/bash
aa="this is aa"
bb="this is bb"
function name() { # name
local cc="this is cc" # $cc
local dd="this is dd" # $dd
echo $aa, $bb # 1 2
echo $cc #
return 0 #shell , 0~257 。
}
echo $dd # , dd 。
name # name
상례 중:
aa 와 bb 는 전역 변 수 를 정의 합 니 다.
cc 와 dd 는 부분 변 수 를 정의 합 니 다. 함수 name 에서 만 사용 할 수 있 습 니 다.
$aa
는 첫 번 째 매개 변수 $1
이 고 $bb
는 첫 번 째 매개 변수 $2
이 며 이런 유추 $n
는 n 번 째 매개 변수 $n
이다. return 0
매개 변 수 를 되 돌려 줍 니 다. 추가: return
를 표시 할 수 있 습 니 다. 추가 하지 않 으 면 마지막 명령 으로 결 과 를 되 돌려 줍 니 다. 역귀 함수
bash 도 재 귀 함수 (자신의 함 수 를 호출 할 수 있 음) 를 지원 합 니 다. 예 를 들 어:
#!/bin/bash
function name() {
echo $1
name hello
sleep 1
}
name
이 스 크 립 트 를 실행 한 후 hello 를 계속 인쇄 하고
Ctrl+C
누 르 면 끝 납 니 다.포크 폭탄
아마도 많은 사람들 이 fork 폭탄 을 들 어 본 적 이 있 을 것 입 니 다. 이것 은 실제 적 으로 매우 간단 한 재 귀 프로그램 일 뿐 입 니 다. 프로그램 이 하 는 일 은 똑 같 습 니 다. 이 재 귀 함 수 는 자신 을 호출 하고 새로운 프로 세 스 를 만 들 수 있 습 니 다. 이 간단 한 프로그램 은 시스템 안의 모든 자원 을 신속하게 소모 하여 서비스 거부 공격 을 초래 할 수 있 습 니 다.
.()
{
.|.&
}
;
.
첫 번 째 줄 은 다음 에 함 수 를 정의 하려 고 합 니 다. 함수 이름 은 소수점 이 고 선택 할 수 있 는 매개 변수 가 없습니다.
두 번 째 줄 은 함수 체 의 시작 을 나타 낸다.
세 번 째 줄 은 함수 체 가 진정 으로 해 야 할 일 입 니 다. 먼저 이 함 수 를 재 귀적 으로 호출 한 다음 파 이 프 를 이용 하여 새로운 프로 세 스 를 호출 합 니 다.
네 번 째 줄 은 함수 체 의 끝 을 나타 낸다.
다섯 번 째 줄 은 명령 행 에서 두 명령 을 구분 하 는 데 사용 되 는 동작 을 수행 하지 않 습 니 다.전체적으로 보면 이 프로그램 은 두 부분 을 포함 하고 먼저 하나의 함 수 를 정의 한 다음 에 이 함 수 를 호출 한 다 는 것 을 나타 낸다.
여섯 번 째 줄 은 이 함 수 를 호출 하 는 것 을 나타 낸다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.