一、shell介绍
1.在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
2.同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
3.Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
二、shell函数的介绍
Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。
Shell 中的函数和C++、Java、Python、C# 等其它编程语言中的函数类似,只是在语法细节有所差别。
三、函数的定义
要定义一个函数可以用以下两种方式
①
function funcname ()
{
shell commnads
}
②
funcname ()
{
shell commnads
}
四、shell中函数使用示例
编辑名为user_login.sh的脚本,内容如下:
#!/bin/bash
##########################################################
#File Name:user_login.sh
#Version:V1.0
#Created Time:2021-04-27 22:53:52
#Description:
#查看用户是否登录
#语法: user_login loginname
##########################################################
function user_login ()
{
if who |grep $1 > /dev/null
then
echo "user $1 is on"
else
echo "user $1 is off"
fi
}
~
执行结果
[root@control scripts]# source user_login.sh
[root@control scripts]# user_login root
user root is on
[root@control scripts]# user_login admin
user admin is off
[root@control scripts]#
分析:这个user_login.sh脚本查看作为参数传入的用户名是否登录在本机上。通过source命令使得函数从文件中读入,在当前shell中生效,函数就如同命令一样变得可调用,将文件后的参数传入函数体,来判断用户是否在线。
五、函数的参数和返回值
#!/bin/bash
##########################################################
#File Name:add.sh
#Version:V1.0
#Created Time:2021-04-27 23:10:05
#Description: 数字相加
##########################################################
add ()
{
let "sum=$1+$2"
return $sum
}
执行结果
[root@control scripts]# source add.sh
[root@control scripts]# add 3 4
[root@control scripts]# echo $?
7
其他示例:
#!/bin/bash
##########################################################
#File Name:function.sh
#Version:V1.0
#Created Time:2021-04-27 23:19:51
#Description:
##########################################################
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
执行结果:
[root@control scripts]# ./function.sh
第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
注意, 10 不 能 获 取 第 十 个 参 数 , 获 取 第 十 个 参 数 需 要 10 不能获取第十个参数,获取第十个参数需要 10不能获取第十个参数,获取第十个参数需要{10}。当n>=10时,需要使用${n}来获取参数。