Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。
Shell 中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。
Shell 函数定义的语法格式如下:
function name() {
statements
[return value]
}
对各个部分的说明:
function是 Shell 中的关键字,专门用来定义函数;
name是函数名;
statements是函数要执行的代码,也就是一组语句;
return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写
函数定义的简化写法
如果你嫌麻烦,函数定义时也可以不写 function 关键字:
name() {
statements
[return value]
}
如果写了 function 关键字,也可以省略函数名后面的小括号:
function name {
statements
[return value]
}
我建议使用标准的写法,这样能够做到“见名知意”,一看就懂
函数调用
调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:
name
如果传递参数,那么多个参数之间以空格分隔:
name param1 param2 param3
不管是哪种形式,函数名字后面都不需要带括号。
和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数。
实例演示
1) 定义一个函数,输出地址:
[root@server1 mnt]# sh test.sh
http://www/baidu.com
[root@server1 mnt]# cat test.sh
#!/bin/bash
#函数定义
function url(){
echo "http://www/baidu.com"
}
#函数调用
url
2) 定义一个函数,计算所有参数的和:
[root@server1 mnt]# sh test.sh
100
[root@server1 mnt]# cat test.sh
#!/bin/bash
function getsum(){
local sum=0
for n in $@
do
((sum+=n))
done
return $sum
}
getsum 10 20 55 15 #调用函数并传递参数
echo $?
$@表示函数的所有参数,$?表示函数的退出状态(返回值)
shell环境变量:
shell环境变量不仅在Shell编程方面,而且在Linux系统管理方面,都起着非常重要的作用
环境变量的特殊之处仅在于它的值适用于所有由登陆进程所生产的子进程
如果要列出系统中所有的环境变量,可使用env命令
自定义环境变量:
export 变量名=value
变量名=value ; export 变量名
Declare -x 变量名=value
清除环境变量unset
全局文件为/etc/profile,对所有用户有效;用户文件为~/.bash_profile,仅对指定的用户有效
用户环境变量配置: .bashrc .bash_profile
全局环境变量配置: /etc/profile /etc/bashrc (推荐) /etc/profile.d/
环境变量知识小结:
1.变量名通常要大写
2.变量名可以在自身的shell以及子shell中使用
3.常用export来定义环境变量
4.执行env默认可以显示所有的环境变量名称以及对应的值
5.输出时用 “$变量名” 取消时用 “unset变量名”
6.如果希望环境变量永久生效,则可以将其放在用户环境变量文件或者全局环境变量文件里