PRF:20170207 How To Write and Use Custom Shell Functions and Libraries.md

@wcnnbdk1
This commit is contained in:
wxy 2017-03-15 22:06:52 +09:00
parent 553dbfdc94
commit 94efd05d7c

View File

@ -1,13 +1,13 @@
如何编写和使用自定义的 Shell 函数和函数库
============================================================
在 Linux 系统下Shell 脚本在各种不同的情形下给予我们帮助,例如展示信息,甚至 [自动执行特定的系统管理任务][1],创建简单的命令行工具等等。
在 Linux 系统下Shell 脚本可以在各种不同的情形下帮到我们,例如展示信息,甚至 [自动执行特定的系统管理任务][1],创建简单的命令行工具等等。
在本指南中,我们将向 Linux 新手展示如何可靠地存储自定义的 shell 脚本,解释如何编写 shell 函数和函数库,以及如何在其它的脚本中使用函数库中的函数。
### Shell 脚本要存储在何处
为了在执行你自己的脚本时不必输入脚本所在位置的完整或绝对路径,脚本必须被存储在 `$PATH`环境变量所定义的路径里的其中一个。
为了在执行你自己的脚本时不必输入脚本所在位置的完整或绝对路径,脚本必须被存储在 `$PATH` 环境变量所定义的路径里的其中一个。
使用下面的命令可以查看你系统中的 `$PATH` 环境变量:
@ -16,7 +16,7 @@ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
```
通常来说,如果在用户的家目录下存在名为 `bin` 的目录,你就可以将 shell 脚本存储在那个目录下,因为那个目录会自动地被包含在用户的 `$PATH` 环境变量中(译者注:在 Centos6/7 下是这样的,在 Debian8 下不是这样的,在 Ubuntu16.04 下又是这样的)。
通常来说,如果在用户的家目录下存在名为 `bin` 的目录,你就可以将 shell 脚本存储在那个目录下,因为那个目录会自动地被包含在用户的 `$PATH` 环境变量中LCTT 译注:在 Centos 6/7 下是这样的,在 Debian 8 下不是这样的,在 Ubuntu 16.04 下又是这样的)。
因此,在你的主目录下创建 `bin` 目录吧(当然这里也可以用来存储 Perl、[Awk][2] 或 Python 的脚本,或者其它程序):
@ -32,14 +32,15 @@ $ mkdir -p ~/lib/sh
### 创建你自己的 Shell 函数和函数库
一个 `shell 函数` 就是在脚本中能够完成特定任务的一组命令。它们的工作原理与其他编程语言中的过程(译可能指的是类似SQL中的存储过程之类的吧、子例程、函数类似。
一个 `shell 函数` 就是在脚本中能够完成特定任务的一组命令。它们的工作原理与其他编程语言中的过程(LCTT 译注:可能指的是类似 SQL 中的存储过程之类的吧)、子例程、函数类似。
编写一个函数的语法如下:
```
函数名() { 一系列的命令 } (校对注:在函数名前可以加上 function 关键字,但也可省略不写)
函数名() { 一系列的命令 }
```
( LCTT 校注:在函数名前可以加上 `function` 关键字,但也可省略不写)
例如,你可以像下面那样在一个脚本中写一个用来显示日期的函数:
```
@ -96,12 +97,13 @@ IFS="$oldifs" #store old internal field separator
要使用某个 `lib` 目录下的函数,首先你需要按照下面的形式 将包含该函数的函数库导入到需要执行的 shell 脚本中:
```
$ . /path/to/lib (译者注:这里的 . 和路径间应该是有空格的)
$ . /path/to/lib
$ source /path/to/lib
```
LCTT 译注:第一行的 `.` 和路径间**必须**是有空格的)
这样你就可以像下面演示的那样,在其它的脚本中使用来自 `~/lib/sh/libMYFUNCS.sh``printUSERDETS` 函数。
这样你就可以像下面演示的那样,在其它的脚本中使用来自 `~/lib/sh/libMYFUNCS.sh``printUSERDETS` 函数
在下面的脚本中,如果要打印出某个特定用户的详细信息,你不必再一一编写代码,而只需要简单地调用已存在的函数即可。
@ -123,15 +125,16 @@ exit 0
$ chmod 755 test.sh
$ ./test.sh
```
[
![Write Shell Functions](http://www.tecmint.com/wp-content/uploads/2017/02/Write-Shell-Functions.png)
][3]
编写 shell 函数
*编写 shell 函数*
在本文中,我们介绍了在哪里可靠地存储 shell 脚本,如何编写自己的 shell 函数和函数库,以及如何在一个普通的 shell 脚本中从函数库中调用库中的某些函数。
在之后,我们还会介绍一种相当简单直接的方式来将 Vim 配置为一个编写 Bash 脚本的 IDE集成开发环境。在那之前记得要经常关注 TecMint ,如果能和我们分享你对这份指南的想法就更好了。
在之后,我们还会介绍一种相当简单直接的方式来将 Vim 配置为一个编写 Bash 脚本的 IDE集成开发环境。在那之前记得要经常关注我们 ,如果能和我们分享你对这份指南的想法就更好了。
--------------------------------------------------------------------------------