我想将 KSH 脚本称为 KSH 脚本。
脚本 1 执行以下操作:
- 循环遍历数据库服务器列表
- 执行查询
- 将每个数据库服务器的查询输出附加到 txt 文件
脚本 2 执行以下操作:
创建一个 HTML 文件,在 HTML 文件中显示文本文件中的每一行
将带有查询结果的 HTML 文件通过电子邮件发送到收据列表
用法:KSH backup_report.ksh qry_rslt_textfile.txt
(txt文件包含来自每个服务器的查询结果)
以下语法正确吗?
#! /bin/ksh
< Start of Script 1 Code>
.
.
.
< End of Script 1 Code>
< Start of Script 2 Code - Call Script 2>
/sybase/dba/backup_report.ksh qry_rslt_textfile.txt
<End of Script 2 Code>
答案1
是的 - 假设脚本具有执行权限,这将执行您想要的操作。实际上,它会将第二个脚本调用为第一个脚本的最后一个命令,但这会造成技术上的麻烦,您可能不需要担心。
答案2
要从另一个程序(或脚本)调用脚本,您必须注意以下事项:
- 必须找到脚本
- 脚本必须有执行权限
- 该脚本必须包含对其解释器的提示
寻找脚本
查看。您已经包含了脚本的完整路径。另一种方法是在脚本 1 顶部的 PATH 变量中包含 /sybase/dba:
PATH=/sybase/dba:$PATH
正确的权限
该脚本需要所有可能需要运行该脚本的用户类别的执行权限。
对于大多数解释器来说,执行权限是不够的;所选口译员还需要能够读脚本的代码。
$ ls -l /sybase/dba/backup_report.ksh
-rwxr-x--- 1 Henk sys 805 Apr 3 07:00 /sybase/dba/backup_report.ksh
正确的口译员
脚本不直接执行。内核需要一个提示来告诉它使用哪个解释器。这是通过包含#!
(哈希棒) 在第一行标记,后面是解释器的路径:
#! /bin/ksh
确保您知道自己ksh
住在哪里并插入正确的路径。
最后说明
还要确保您知道哪个版本的ksh
.如今,ksh
implicitksh93
仍在积极开发中,并可在大多数平台上使用。