如何编写和使用自定义Shell函数和库

在Linux中,shell脚本以许多不同的方式帮助我们,包括执行或甚至 自动化某些系统管理任务 ,创建简单的命令行工具等等。 在本指南中,我们将展示新的Linux用户在哪里可靠地存储自定义外壳脚本,解释如何编写自定义外壳函数和库,使用其他脚本中的函数库。

在哪里存储Shell脚本

为了在不输入完整/绝对路径的情况下运行脚本,它们必须存储在 $ PATH环境变量的某个目录中。 要检查 $ PATH ,请发出以下命令:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
通常,如果目录 bin存在于用户主目录中,则它将自动包含在他/她的 $ PATH中 。你可以在这里存储你的shell脚本。 因此,创建 bin目录(它也可以存储 PerlAwkPython脚本或任何其他程序):
$ mkdir ~/bin
接下来,创建一个名为 lib的缩写)的 目录 ,您将在其中保留自己的库。 您还可以保留其他语言(如C,Python等)的库。 在它下面,创建另一个名为 sh的目录;这将特别存储你的shell库:
$ mkdir -p ~/lib/sh 

创建自己的Shell函数和库

shell函数是一组在脚本中执行特殊任务的命令。它们与其他编程语言中的过程,子例程和函数类似。 写函数的语法是:
function_name() { list of commands }
例如,您可以在脚本中编写函数以显示 日期 ,如下所示:
showDATE() {date;}
每次你想显示 日期 ,只需调用上面的函数使用它的名字:
$ showDATE
shell库只是一个shell脚本,但是,您可以编写一个库来仅存储您以后可以从其他shell脚本调用的函数。 下面是一个在我的 〜/ lib / sh目录下有一个名为 libMYFUNCS.sh的库的例子,有更多的函数示例:
#!/bin/bash 
#Function to clearly list directories in PATH 
showPATH() { 
oldifs="$IFS"   #store old internal field separator
IFS=:              #specify a new internal field separator
for DIR in $PATH ;  do echo $DIR ;  done
IFS="$oldifs"    #restore old internal field separator
}
#Function to show logged user
showUSERS() {
echo -e “Below are the user logged on the system:\n”
w
}
#Print a user’s details 
printUSERDETS() {
oldifs="$IFS"    #store old internal field separator
IFS=:                 #specify a new internal field separator
read -p "Enter user name to be searched:" uname   #read username
echo ""
#read and store from a here string values into variables using : as  a  field delimiter
read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep   "^$uname")"
#print out captured values
echo  -e "Username is            : $username\n"
echo  -e "User's ID                 : $uid\n"
echo  -e "User's GID              : $gid\n"
echo  -e "User's Comments    : $comments\n"
echo  -e "User's Home Dir     : $homedir\n"
echo  -e "User's Shell             : $shell\n"
IFS="$oldifs"         #store old internal field separator
}
保存文件并使脚本可执行。

如何从库中调用函数

要在 lib中使用函数,您需要首先在shell脚本中包含将在其中使用函数的 lib ,形式如下:
$ ./path/to/lib
OR
$ source /path/to/lib
因此,您将使用 lib〜 / lib / sh / libMYFUNCS.sh中的函数 printUSERDETS在另一个脚本中,如下所示。 您不必在此脚本中编写另一个代码来打印特定用户的详细信息,只需调用现有函数。 打开一个名为 test.sh的新文件:
#!/bin/bash 
#include lib
.  ~/lib/sh/libMYFUNCS.sh
#use function from lib
printUSERDETS
#exit script
exit 0
保存它,然后使脚本可执行并运行它:
$ chmod 755 test.sh
$ ./test.sh 

写Shell函数

在本文中,我们向您展示了在哪里可靠地存储shell脚本,如何编写自己的shell函数和库,在正常的shell脚本中从库调用函数。 接下来,我们将解释一个直接的方式配置 Vim作为Bash脚本的 IDE 。在此之前,始终保持与youcl的连接,并通过下面的反馈表单分享您对本指南的看法。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏