bash shell 函数库ash由自由软件基金会,Inc.版权所有(C) 1989-2011。
语法
bash [options] [file]
描述
Bash是一种与sh兼容的命令语言解释器,它执行从标准输入或文件中读取的命令。Bash还合并了Korn和C shell (ksh和csh)的有用特性。
Bash旨在成为IEEE POSIX规范(IEEE标准)的Shell和实用程序部分的一致实现1003.1)。在默认情况下,Bash可以配置为符合posix的。
sh 脚本
sh 脚本以 /bin/bash 作为脚本解释器
sh 脚本文件中的格式要求:
在 sh 脚本文件中,所有的 # 都被称为注释符
!但是在脚本文件中的第一行必须以 #!/bin/bash这种写法,以便 bash 解释器能够识别出
在 shell 引用变量时使用 echo $变量名 这种方式引用,如果未使用 $ 符,将打印 echo 后面的数值,如果使用 echo $变量名 将会打印出该变量名所获得的值。
echo “text $1″:在 echo 中的,双引号中的特殊字符会被 shell 所解析
echo ‘text $1’:而在 echo 中的单引号中特使字符,则会被忽略掉,即将 echo 的所有字符打印
“:反引号,属于命令中嵌套子命令
在脚本中是不存在整型的,所有的字符都被识别为字符串
函数库
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
Shell 函数与 Shell脚本类似,Shell 的函数驻扎于内存中因此 shell 函数运行的速度非常快
shell中函数的定义格式如下:
Shell
[ function ] funname [()]
{
action;
[return int;]
}
# 或者
function fun_name () {
command1
command2
……
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[function]funname[()]
{
action;
[returnint;]
}
# 或者
functionfun_name(){
command1
command2
……
}
可以将 shell 函数 定义到 .bash_profile文件中、也可放于脚本文件中、或者直接放在指令里,通过 unset 删除定义的函数。当前 bash 退出后,定义的函数将不再保存
可以带 function fun() 定义,也可以直接 fun() 定义,不带任何参数。
参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
例 一个简单的引用
Shell
#!/bin/bash
function date1 () {
date
echo '为 date 指令定义一个 date1 的函数' > /dev/null
}
date1
date1 # 引用指定的函数
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
functiondate1(){
date
echo'为 date 指令定义一个 date1 的函数'>/dev/null
}
date1
date1# 引用指定的函数
下面的例子定义了一个函数并进行调用:
Shell
#!/bin/bash
function demofun () {
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demofun
echo "-----函数执行完毕-----"
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
functiondemofun(){
echo"这是我的第一个 shell 函数!"
}
echo"-----函数开始执行-----"
demofun
echo"-----函数执行完毕-----"
下面定义一个带有return语句的函数:
Shell
#!/bin/bash
function funReturn () {
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read bNum
echo "两个数字分别为 $aNum 和 $bNum !"
return $(($aNum+$bNum))
}
funReturn
echo "输入的两个数字之和为 $? !"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
functionfunReturn(){
echo"这个函数会对输入的两个数字进行相加运算..."
echo"输入第一个数字: "
readaNum
echo"输入第二个数字: "
readbNum
echo"两个数字分别为 $aNum 和 $bNum !"
return$(($aNum+$bNum))
}
funReturn
echo"输入的两个数字之和为 $? !"
带参数的函数示例:
Shell
#!/bin/bash
function funParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funParam 1 3 0 4 5 6 7 8 9 34 73
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
functionfunParam(){
echo"第一个参数为 $1 !"
echo"第二个参数为 $2 !"
echo"第十个参数为 $10 !"
echo"第十个参数为 ${10} !"
echo"第十一个参数为 ${11} !"
echo"参数总数有 $# 个!"
echo"作为一个字符串输出所有参数 $* !"
}
funParam1304567893473
定义一个函数库,并在一个脚本中引用
Shell
# 1. 定义函数库
#!/bin/bash
function sum () {
returnValue=$(( $1 + $2 ))
return $returnValue
}
read -p "请输入第一个数字" Num1
read -p "请输入第二个数字" Num2
sum $Num1 $Num2
# 2. 在脚本中文件中引用一个函数库
#!/bin/bash
. /home/net/function # 引用指定库
echo "$Num1+$Num2=$?"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1. 定义函数库
#!/bin/bash
functionsum(){
returnValue=$(($1+$2))
return$returnValue
}
read-p"请输入第一个数字"Num1
read-p"请输入第二个数字"Num2
sum$Num1$Num2
# 2. 在脚本中文件中引用一个函数库
#!/bin/bash
./home/net/function# 引用指定库
echo"$Num1+$Num2=$?"
:输出结果为
Shell
# 例 一个简单的引用 输出结果为
2018年 08月 21日 星期二 13:17:48 CST
2018年 08月 21日 星期二 13:17:48 CST
# 下面的例子定义了一个函数并进行调用 输出结果为:
-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----
# 下面定义一个带有return语句的函数 输出结果为:
这个函数会对输入的两个数字进行相加运算...
输入第一个数字:
5
输入第二个数字:
8
两个数字分别为 5 和 8 !
输入的两个数字之和为 13 !
# 带参数的函数示例 输出结果为:
第一个参数为 1 !
第二个参数为 3 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 3 0 4 5 6 7 8 9 34 73 !
# 定义一个函数库,并在一个脚本中引用 输出结果为:
请输入第一个数字10
请输入第二个数字20
10+20=30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 例 一个简单的引用 输出结果为
2018年08月21日星期二13:17:48CST
2018年08月21日星期二13:17:48CST
# 下面的例子定义了一个函数并进行调用 输出结果为:
-----函数开始执行-----
这是我的第一个shell函数!
-----函数执行完毕-----
# 下面定义一个带有return语句的函数 输出结果为:
这个函数会对输入的两个数字进行相加运算...
输入第一个数字:
5
输入第二个数字:
8
两个数字分别为5和8!
输入的两个数字之和为13!
# 带参数的函数示例 输出结果为:
第一个参数为1!
第二个参数为3!
第十个参数为10!
第十个参数为34!
第十一个参数为73!
参数总数有11个!
作为一个字符串输出所有参数1304567893473!
# 定义一个函数库,并在一个脚本中引用 输出结果为:
请输入第一个数字10
请输入第二个数字20
10+20=30