我是Unix和Terdata BTEQ的新手。我想将变量传递给.sh文件,该文件调用具有SQL代码的.sql文件。 在此之前,我试图至少在.sh文件中定义参数值并在.sh文件本身中具有SQL代码。但它似乎不起作用,
以下是我正在尝试的代码,
temp_table=`PRP_D1_WORK.ADHOC_CMSC_NIEL_BRND_DICT_STG`
.LOGON tddev/username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT
现在我使用以下命令在Unix(Via putty)中运行此语句:
bteq < sample.sh
我在这里得到的错误是$ temp_table不存在,我认为这意味着该变量没有被传递。
一旦我能够实现这一点,我想在执行shell脚本时或者通过定义HERE文档来传递变量值。
让我知道这种情况下的错误是什么。
谢谢, Priyash
答案 0 :(得分:0)
好的,我能够解决它。 我应该在.sh文件中包含bteq
然后运行.sh而不是bteq&lt; sample.sh
并且有效。
转到下一个问题,我可以将.sh文件顶部定义的参数传递给我将在.sh内调用的.sql文件 运用 .run example.sql
答案 1 :(得分:0)
是的,您可以将参数传递给shell脚本
sample.sh temp_table_name login_id
在脚本中你需要使用$ 1,$ 2 ......所以在第一个参数$ 1,$ 2是第二个参数等等。 这里temp_table是您作为第一个参数传递的temp_table_name,$ 2 = login_id
temp_table=$1
.LOGON $2/username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT