lightweight
lightweight

Reputation: 3337

pass a variable into a string ksh

how do you pass a global variable into a string inside a function?

I have the following code that works for the most part:

td_query () { bteq << EOF |grep '^>' |sed -e "s/^>/;/g" 
$(cat $HOME/.tdlogon)
    DATABASE $schemaName;
     .set width 10000;
      .set titledashes off;
    $1
.LOGOFF;
.QUIT;
.EXIT
EOF
}

rqstID="1357"

echo $(td_query "select  '>'||'UPDATE schema.SEGN_$rqstID_PRCSS_TBL SET POPN_LVL_EXCLN ='||a.CODE_ID||' WHERE ' || b.SQL_FILE_NM ||' AND POPN_LVL_EXCLN IS NULL'
        FROM SE_POPN_EXCLSN a
        INNER JOIN SE_CODE_LIB b
        ON
        a.CODE_ID = b.CODE_ID;")

but the results come back:

UPDATE schema.SEGN_ SET POPN_LVL_EXCLN = 1002 WHERE MR_IND = 'Y'

missing this:

$rqstID_PRCSS_TBL

it should be:

UPDATE schema.SEGN_1357_PRCSS_TBL SET POPN_LVL_EXCLN = 1002 WHERE MR_IND = 'Y'

Upvotes: 0

Views: 73

Answers (1)

Etan Reisner
Etan Reisner

Reputation: 80931

_ is a legal character in a shell variable. The shell is trying to find a variable by the name of $rqstID_PRCSS_TBL and getting an empty string. (That's why _PRCSS_TBL is disappearing from your output.)

You need to tell the shell where the variable name ends: schema.SEGN_${rqstID}_PRCSS_TBL

Upvotes: 2

Related Questions