Shell programming 10


在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

文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录