korn-shell脚本基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
什么是 Shell?
IBM® AIX® 操作系统和其他的类 UNIX 操作系统一样,都需要通过某种方式与内核进行通信。这项任务正是通过使用 Shell 来实现的。您可以使用各种不同的 Shell,但本文重点关注于 Korn Shell。Korn Shell 是 AIX 所使用的缺省 Shell。
当您登录到 AIX 中时,将以某个目录的提示符作为开始。缺省目录通常是您的 home 目录。之所以将其称为 home 目录,是因为该目录的结构通常如下所示:
$/home/jthomas:
当登录时,您将处于命令行或者命令提示符处。这正是您输入 UNIX 命令的地方。您可以输入与 UNIX 内核进行交互的 Shell 命令。这些命令可能简单到只有一行(比如查看日期),也可能为多行,而这取决于您所进行的操作。清单 1 提供了一些示例命令。
清单 1. 示例命令
$date
Fri May 1 22:59:28 EDT 2008
$uptime
10:59PM up 259 days, 9:44, 5 users, load average: 3.81, 14.27, 13.71
$hostname
gonzo
有关 Shell 命令的最棒的一项功能是,您可以将多个命令组合在一个称为脚本的文件中,它允许您依次运行多个命令。当您必须一次又一次重复地运行相同的命令时,使用脚本非常合适。您可以将这些命令放到一个 Korn Shell 脚本中,而无需反复地键入这些命令。
编写您的第一个 Korn Shell 脚本
Korn Shell 脚本中的第一行是 Shell 自身。它被表示为下面的形式:#!/bin/ksh
要在 AIX 中编写 Korn Shell 脚本,您需要使用一种文本编辑器。vi 是一种使用最广泛、且随处可见的文本编辑器。开始接触时可能会觉得有点麻烦,但随着使用 vi 的次数的增多,您将熟练地掌握它。关于如何使用 vi 文本编辑器,人们撰写了很多相关的书籍。
要开始编写您的第一个 Korn Shell 脚本,首先需要打开 vi 编辑器,并添加 Shell 名称作为第一行。完成这项操作之后,您需要构建某种类型的脚本标头,用来告诉编写脚本的用户,该脚本将执行什么操作,以及该脚本的编写时间。您可以对脚本进行任意地命名,但通常使用扩展名 .ksh 来表示 Korn Shell 脚本。您并不是必须要这样做,但这是一种很好的做法。镑符号 (#) 可用于对脚本进行注释,如清单 2 中所示。
清单 2. 脚本标头的示例
$vi my_first_script.ksh
#!/bin/ksh
###################################################
# Written By: Jason Thomas
# Purpose: This script was written to show users how to develop their first script
# May 1, 2008
###################################################
这个脚本标头非常简单,但它应用了上述的技巧。
变量
在脚本中设置变量是相当简单的。我通常使用大写形式来表示脚本内的所有变量,如清单 3 所示,但您不需要这样做。
清单 3. 变量的示例
#Define Variables
HOME="/home/jthomas" #Simple home directory
DATE=$(date) # Set DATE equal to the output of running the shell command date
HOSTNAME=$(hostname) # Set HOSTNAME equal to the output of the hostname command
PASSWORD_FILE="/etc/passwd" # Set AIX password file path
Korn Shell 的具体细节
到目前为止,作为编写 Korn Shell 脚本的入门内容,您已经了解了如何编写基本的脚本标头,以及定义变量。现在,您可以开始编写一些Korn Shell 代码了。
让我们开始从某个文件中读取一些行。在这个示例中,使用您已经在脚本中定义过的 /etc/passwd 文件,并且仅打印用户名称,如清单 4 中所示。
清单 4. for 循环
$vi my_first_script.ksh
#!/bin/ksh
###################################################
# Written By: Jason Thomas
# Purpose: This script was written to show users how to develop their first script
# May 1, 2008
###################################################
#Define Variables
HOME="/home/jthomas" #Simple home directory
DATE=$(date) # Set DATE equal to the output of running the shell command date
HOSTNAME=$(hostname) # Set HOSTNAME equal to the output of the hostname command
PASSWORD_FILE="/etc/passwd" # Set AIX password file path
#Begin Code
for username in $(cat $PASSWORD_FILE | cut -f1 -d:)
do
print $username
done