Bash支持函数,如何去定义和使用的

function fname(){

statements;

}

或者

fname()

{

statememts

}

在使用方面,可以直接使用函数名来调用一个函数

$frame

也可以直接函数名

$frame arg1 arg2 传递参数

接下来我们看一个函数 frame()

frame(){

ehco $1 ,$2; 访问参数 1 2

echo “$@”; 以列表的方式一次性打印所有的参数

echo “$*”; 类似@,参数作为单个实体

return 0; 返回值

}

从参数可以直接传递给脚本并通过

script:$0(脚本名)访问

$@ 被扩展为 $1 $2 $3

$* 被扩展为$1c$2c$3

所以$@常被使用

还有就是

Shell中的函数,一般支持递归

比如 F(){

echo $1;

F hello;

sleep 1;

}

导致不断的递归调用自己,不断的生成进程,最终导致服务爆满

这个可以通过修改配置文件 /etc/security/limits.conf来限制生成最大进程数从而避免挤爆了

导出函数

将函数像是环境变量一样的用export 导出,这样,函数的作用域就可以扩展到了子进程之中了

export -f fname

读取返回值

我们获取到函数的方式可以如下

function name;

echo $?;

给出命令cmd的返回值

我们可以利用返回值的校验,将其检测是否正常执行流程结束

#!/bin/bash

function test(){

return 0;

}

test

if [  $? -eq 0 ];

then

echo “test is already successfully”

else

echo “test isnt successfully”

fi

命令传递参数

命令的参数可以以不同的格式进行传递,假设-p -v是可选的选项 -k NO是另一个可以接受数字的选项,同时这个命令还接受一个文件名作为参数,那么其执行方式很多,包含以下几种

command -p -v -k 1 file

command -pv -k 1 file

command -vpk 1 file

command file -pvk 1

发表评论

邮箱地址不会被公开。 必填项已用*标注