Shell脚本:如何从文件中输入变量值以使用提供的变量运行sql

问题描述 投票:-1回答:1

我有一个带有两列的文本文件,数据数量为'n'。我正在运行一个Shell脚本,该脚本从Shell脚本中定义的文件和输入变量中获取数据。

我的数据安排如下

HX_EXT TX_EXTHX_GAMER TX_GAMERHX_SALE TX_SALEHX_PERF TX_PERFHX_ACCESS TX_ACCESS... ...依此类推**

以下Shell脚本从定义了变量的输入文件中获取数据。

#!/bin/bash
set -x
FILE_PATH=/home/db2git1
INP_FILE=$FILE_PATH/FINAL_FILE.OUT
db2 connect to GIT1;
db2 -x "SELECT substr(SCHEMANAME, 1, 50) FROM SYSCAT.SCHEMATA where SCHEMANAME LIKE 'HX_%'" > SOURECSCHEMA.OUT

cp SOURECSCHEMA.OUT DESTINATIONSCHEMA.OUT
sed -i 's/IM1_/DMI_/g' DESTINATIONSCHEMA.OUT
paste SOURECSCHEMA.OUT DESTINATIONSCHEMA.OUT > FINAL_FILE.OUT
chmod +x SCHEMA_MIMMIC.sh
chmod +x DESTINATIONSCHEMA.OUT
chmod +x SOURECSCHEMA.OUT


while IFS= read -r line
do
VAR1=$(echo "$INP_FILE"|cut -f 1 -d '|')
VAR2=$(echo "$INP_FILE"|cut -f 2 -d '|')
done

db2 "CALL SYSPROC.ADMIN_COPY_SCHEMA("$VAR1","$VAR2",'COPY',NULL,'','','ERRORSCHEMA','ERRORTAB')"

但是它以以下错误结尾(特别是在按Enter之前没有输出)。>>

+ cp SOURECSCHEMA.OUT DESTINATIONSCHEMA.OUT
+ sed -i s/IM1_/DMI_/g DESTINATIONSCHEMA.OUT
+ paste SOURECSCHEMA.OUT DESTINATIONSCHEMA.OUT
+ chmod +x SCHEMA_MIMMIC.sh
+ chmod +x DESTINATIONSCHEMA.OUT
+ chmod +x SOURECSCHEMA.OUT
+ IFS=
+ read -r line

++ echo /home/db2git1/FINAL_FILE.OUT
++ cut -f 1 -d '|'
+ VAR1=/home/db2git1/FINAL_FILE.OUT
++ echo /home/db2git1/FINAL_FILE.OUT
++ cut -f 2 -d '|'
+ VAR2=/home/db2git1/FINAL_FILE.OUT
+ IFS=
+ read -r line

++ echo /home/db2git1/FINAL_FILE.OUT
++ cut -f 1 -d '|'
+ VAR1=/home/db2git1/FINAL_FILE.OUT
++ echo /home/db2git1/FINAL_FILE.OUT
++ cut -f 2 -d '|'
+ VAR2=/home/db2git1/FINAL_FILE.OUT
+ IFS=
+ read -r line

调试模式不会引发任何错误,并且如上所述粘贴在输出上。

如何解决此错误?

我有一个带有两列的文本文件,数据数量为'n'。我正在运行一个Shell脚本,该脚本从Shell脚本中定义的文件和输入变量中获取数据。我的数据排列为...

shell sh db2-luw
1个回答
0
投票

我想您错过了将文件名传递到while循环的错。另外,当您尝试读取VAR1和VAR2时,我认为echo

© www.soinside.com 2019 - 2024. All rights reserved.