셸 스 크 립 트 함수 설명, 호출
1938 단어 shell
1. 함수 선언
1.1 함 수 는 먼저 성명 한 후에 호출 하고 성명 과 호출 에 순서 적 인 요구 가 있어 야 한다.
1.2 셸 의 함수 반환 값 은 숫자 일 수 있 습 니 다. 0 을 되 돌려 실행 에 성 공 했 음 을 표시 합 니 다. 다른 유형의 값 을 되 돌려 줄 때 오류 가 발생 합 니 다: numeric argument required
1.3 함수 반환 값 이 제 한 된 문제 로 인해 전역 변 수 를 정의 하여 함수 의 처리 결 과 를 가 져 와 야 합 니 다.
1.4 함수 호출 방식: 함수 명 매개 변수 목록
demo:
#全局变量:字符串去除前后空格的结果
trimResult=""
#函数声明:trim字符串
function trim(){
#字符串为空不处理
if [ -z "$1" ]; then
trimResult=""
else
#去除字符串前后的空格
trimResult=$(echo $1|awk '{sub(/^ */,"");sub(/ *$/,"")}1')
fi
}
#函数调用: 获取第一个“-”之后的trim之后的字符串, 字符串可能有空格, 所以用引号包括
trim "$(echo ${temp#*-})"
#函数处理结果使用
echo "trim之后的内容为:$trimResult"
* * * * 문제: 셸 의 기본 빈 칸 은 구분자 이 고 전달 하 는 매개 변수 에 빈 칸 이 있 으 면 여러 매개 변수 로 여 겨 집 니 다.
두 가지 해결 방법 이 있다.
방식 1: 따옴표 로 인 자 를 포함 합 니 다.
#传递带有空格的参数
trim "first paramter"
방식 2: 기본 구분자 초기 화
#!/bin/sh
function test(){
echo "all params=$@"
echo "param_a=$1"
echo "param_b=$2"
}
param1="aa bb"
echo 'invoke: test $param1, '"param1=$param1"
test $param1
param2="11 22"
echo 'invoke: test "$param2", '"param2=$param2"
test "$param2"
#备份默认分隔符
IFS_BAK=$IFS
#指定新的分隔符
IFS="!!"
echo 'change default separator, invoke: test $param1,'" param1=$param1"
test $param1
#恢复系统默认分隔符
IFS=$IFS_BAK
실행 결과: 결 과 를 통 해 알 수 있 듯 이 따옴표 나 기본 구분자 수정 후 빈 칸 이 있 는 매개 변수 구 조 는 파괴 되 지 않 습 니 다.
invoke: test $param1, param1=aa bb
all params=aa bb
param_a=aa
param_b=bb
invoke: test "$param2", param2=11 22
all params=11 22
param_a=11 22
param_b=
change default separator, invoke: test $param1, param1=aa bb
all params=aa bb
param_a=aa bb
param_b=
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.