我是unix中的新手。但我需要了解客户端给出的代码:(。我试图询问客户端有关代码的详细信息,例如代码应该做什么,但他自己也不知道。所以基本上我坚持使用我的目的代码不知道,但我必须了解它的作用>。<。 到目前为止,这是我能够从代码中做出的(以评论的形式)[1] [2] [3]等。 我对第[8]到[12]号评论有疑问/不知道。对于[1]到[7],我觉得大多数是正确的,但如果有任何错误,请随意指出。 一点背景:我应该在teradata工作,这可能与它有关。 我的评论是粗体{ *}
#!/usr/bin/ksh **//[1] sets shell**
set -x **//[2]will this show the argument values before execution?**
l=$1 **//[3]$1,$2,$3 are the arguments with which this shell**
h=$2 **//is invoked.l= first argument h= second argument and**
k=$3 **//k=3rd argument.**
/export/home/someguy/daily_refresh/abc_mt_dt.ksh $l $h $k
**//[4] calling abc_mt_dt.ksh
// with arguments l h and k**
chmod 777 /export/home/someguy/daily_refresh/$k.txt
**// making $k.txt a read write n**
**//executable.This im sure im right**
while read line
do
echo $line |read a b c
**// [5] reads three values from keyboard and displays them as
//well as storing them in values a b and c**
DATA_START_DT=$a
**// [6] variables DATA_START_DT DATA_END_DT ID set to the three**
DATA_END_DT=$b **// values read from keyboard**
ID=$c
echo $DATA_START_DT **//[7] displaying the values read from keyboard**
echo $DATA_END_DT
echo $ID
rm -rf /export/home/someguy/daily_refresh/logs/abc_$DATA_END_DT.log
**//[8] rm -rf is to recursively remove files and folders ..
so what will this command do? will it remove all files and folders
inside /export/home/someguy/daily_refresh/logs/ ?**
bteq <<EOI > /export/home/someguy/daily_refresh/logs/abc_$DATA_END_DT.log 2>&1
**// [9] need explaination as to what this does.**
.run file = /export/home/someguy/logon_caracal.bteq **//[10]**
.MAXERROR 1; **//[11]**
DATABASE SOME_DATABASE; **//[12]**
答案 0 :(得分:1)
[8] 不,它不会删除/export/home/someguy/daily_refresh/logs/
中的所有文件和文件夹。它只会删除名为/export/home/someguy/daily_refresh/logs/abc_$DATA_END_DT.log
的文件。
在 [9] 中,脚本执行bteq
命令。
<< EOI
是here document。下面的所有语句,直到包含单词EOI的行,都被传递给bteq
程序。这些是bteq
命令,而不是shell命令。 bteq
程序的所有输出和错误都写入/export/home/someguy/daily_refresh/logs/abc_$DATA_END_DT.log
。
[10] 这是包含将要处理的SQL请求和bteq命令的文件。
[11] MAXERROR为1表示如果在处理过程中出现错误级别2或更高级别,bteq将退出。
答案 1 :(得分:1)
[10]它包含.LOGON命令和用于连接Teradata系统的凭据。 .LOGON TPDID/UserID, Password;
[11] MAXERROR
表示一旦达到分配给MAXERROR
的值,BTEQ脚本就会中止。
[12] DATABASE SOME_DATABASE
设置会话的默认数据库,或者直到遇到下一个DATABASE
命令。如果对象存在于默认数据库中,这允许开发人员避免使用{database}。{object}完全限定SQL。