在shell里面,命令就是函数,函数就是功能模块,功能模块就是工具,所以可以说玩工具,也可以说玩命令。
SHELL=[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
progress:[####################] 100%
Ax Shell Functions | 函数
如何一门编程语言的重要内容就是函数了,shell也是如此。 函数能使基本的整体分解成更小的逻辑子部分。然后需要时就调用。
创建一个函数,实现代码的复用。
Creating Functions | 创建
描述函数的语法 −
function_name () {
list of commands
}
函数的名字 function_name, 就是你要调用时的名字 。后面必须有圆括号,然后再跟花括号。
例 −
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World"
}
# Invoke your function
Hello
执行 −
$./test.sh
Hello World
Pass Parameters to a Function | 传参
使用 $1, $2 传参,和执行文件加参数时一样。
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
}
# Invoke your function
Hello Zara Ali
执行 −
$./test.sh
Hello World Zara Ali
Returning Values from Functions | 返回值
如果执行函数内部的 exit 命令, 不仅会终止函数的执行,而且会终止函数的调用。
如果你想终止函数的执行,可以使用 return返回任何值 −
return code
这里的code
表示任何代码,选择一个有意义的返回值。
例
下面是返回值为10 −
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
return 10
}
# Invoke your function
Hello Zara Ali
# Capture value returnd by last command
ret=$?
echo "Return value is $ret"
执行 −
$./test.sh
Hello World Zara Ali
Return value is 10
Nested Functions | 嵌套函数
函数具有一个特性,那就是调用其它函数,如果调用自己,就叫递归。
#!/bin/sh
# Calling one function from another
number_one () {
echo "This is the first function speaking..."
number_two
}
number_two () {
echo "This is now the second function speaking..."
}
# Calling function one.
number_one
执行 −
This is the first function speaking...
This is now the second function speaking...
Function Call from Prompt | 调用
将常用的函数放在**.profile**文件中。无论何时登入都可以使用在命令提示符中 −
或者先执行脚本
$. test.sh
执行脚本后,将定义函数维持在当前shell中
$ number_one
This is the first function speaking...
This is now the second function speaking...
$
需要取消函数的定义,可以使用unset
命令-f
参数来删除函数的定义。
$ unset -f function_name