0

我是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]**
4

2 回答 2

1

[8]不,它不会删除/export/home/someguy/daily_refresh/logs/. 它只会删除名为/export/home/someguy/daily_refresh/logs/abc_$DATA_END_DT.log.

[9]中,脚本执行bteq命令。

<< EOI这里的文件。下面的所有语句,直到包含单词 EOI 的行,都被传递给bteq程序。这些是bteq命令,而不是 shell 命令。程序的所有输出和错误bteq都写入/export/home/someguy/daily_refresh/logs/abc_$DATA_END_DT.log.

[10]这是包含将要处理的 SQL 请求和 bteq 命令的文件。

[11] MAXERROR 为 1 表示如果在处理过程中出现 2 级或更高级别的错误,bteq 将退出。

于 2012-09-27T10:22:16.373 回答
1

[10] 这包含 .LOGON 命令和用于连接到 Teradata 系统的凭据。.LOGON TPDID/UserID, Password;

[11]MAXERROR表示一旦MAXERROR达到分配的值,BTEQ 脚本将中止。

[12]DATABASE SOME_DATABASE设置会话的默认数据库或直到DATABASE遇到下一个命令。如果对象存在于默认数据库中,这允许开发人员避免使用 {database}.{object} 完全限定他们的 SQL。

于 2012-09-27T13:05:05.373 回答