Bash 将Shell中的变量传递给Teradata BTEQ
我不熟悉Unix和Terdata BTEQ。我想将变量传递给.sh文件,该文件调用包含sql代码的.sql文件。 在这样做之前,我尝试在.sh文件中至少定义参数值,并在.sh文件本身中包含SQL代码。但它似乎不起作用 下面是我正在尝试的代码Bash 将Shell中的变量传递给Teradata BTEQ,bash,shell,unix,teradata,Bash,Shell,Unix,Teradata,我不熟悉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 headi
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中(通过putty)使用以下命令运行此语句:
bteq < sample.sh
bteq
我在这里得到的错误是$temp_table不存在,我认为这意味着变量没有被传递
一旦我能够实现这一点,我想在执行shell脚本或通过定义HERE doc的同时传递变量值
让我知道这种情况下的错误是什么
谢谢,
Priyash好的,我能解决它。 我应该在.sh文件中包含bteq 只需运行.sh而不是bteq
。运行example.sql是的。当然,您可以将参数作为
sample.sh temp_table_name login_id
在脚本中,您需要使用$1、$2…以此类推,其中$1是第一个参数,$2是第二个参数,等等。。
这里temp\u table是作为第一个参数传递的temp\u table\u名称,并且$2=login\u id
temp_table=$1
.LOGON $2/username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT
在回答中评论和提问不会导致任何结果