Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将Shell中的变量传递给Teradata BTEQ_Bash_Shell_Unix_Teradata - Fatal编程技术网

Bash 将Shell中的变量传递给Teradata BTEQ

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

我不熟悉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中(通过putty)使用以下命令运行此语句:

bteq < sample.sh 
bteq
我在这里得到的错误是$temp_table不存在,我认为这意味着变量没有被传递

一旦我能够实现这一点,我想在执行shell脚本或通过定义HERE doc的同时传递变量值

让我知道这种情况下的错误是什么

谢谢,
Priyash

好的,我能解决它。 我应该在.sh文件中包含bteq

只需运行.sh而不是bteq 它成功了

转到下一个问题,我能否将在.sh文件顶部定义的参数传递到.sql文件中,我将在.sh文件中调用该文件 使用
。运行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

在回答中评论和提问不会导致任何结果