今天我要介绍关于外壳函数的知识。它是典型Unix操作系统管理员使用命令解决的方案之一。大多数现代外壳都支持这种解决方案——外壳函数使您能够创建更复杂的序列,但是由于它们作为内置函数运行,在差异相当小时可能更为实用。
如果您管理多种Unix操作系统(特别是在异构环境中),则最艰巨的任务可能是在不同环境之间切换并执行不同的任务,同时还必须考虑系统之间的所有差异。典型的Unix操作系统 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。
其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。
使用外壳函数的方法操作Unix操作系统命令
定义函数 function NAME() { # do stuff here } 调用函数时,函数参数作为 $1、$2 等形式来提供,就像在典型的外壳脚本中一样。因此,您可以定义一个函数,使其执行与 killall 相同的基于字符串的信号发送功能。例如定义一个执行与 killall 相同的信号发送功能的函数 function killall() { ps -ef|grep $1|awk '{ print $2; }'|xargs kill -9 } 请注意,该函数的 awk 部分中的 $2 不会展开,因为您已经对 awk 脚本定义使用了单引号,这样阻止了展开,并且在此示例中会挑选第二列。
Unix操作系统函数的局限性在于,它们依赖外壳提供支持能力,而这并不总是可能或可用。虽然可以随心所欲地使内联外壳函数变得任意长,但在许多情况下,外壳函数并不理想。
例如,在Unix操作系统模拟更复杂的命令或提供命令包装的超长序列中,您需要分析选项并提供本地化的等效命令,此时内联函数就没有多大用处了。在这种情况下,外壳脚本可能更为适合。
Unix操作系统中通过使用命令行工具和外壳流控制(如 if 或case)的组合,您可以使用单个源来选择各种要使用的选项。有两个工具在这种情况下很有用:一个工具识别主机(如 hostname 或 uname),另一个工具识别平台 (uname)。
我们这样就介绍玩了关于Unix操作系统使用外壳函数的知识。
【编辑推荐】