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

穆罕默德·沙姆沙德·侯赛因

我有一个包含两列和“n”个数据的文本文件。我正在运行一个 shell 脚本,它从 shell 脚本中定义的文件和输入变量中获取数据。

我的数据排列如下

HX_EXT TX_EXT HX_GAMER TX_GAMER HX_SALE TX_SALE HX_PERF TX_PERF HX_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

调试模式不会抛出任何错误并停留在上面粘贴的输出上。

如何修复此错误?

戈拉帕古达·帕蒂尔

我猜你错过了将文件名传递给 while 循环。此外,当您尝试读取 VAR1 和 VAR2 时,我认为echo命令应该打印变量的内容而不是文件名。

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

希望这可以帮助 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将变量值作为输入传递给从Shell脚本调用的oracle sql文件

如何在Shell脚本中提供从变量值到命令的参数?

如何从Dockerfile Shell脚本中的.env文件获取环境变量值?

如何在linux中使用用户输入的变量值从一个shell脚本到另一个shell脚本?

如何在shell脚本中使用双引号传递变量值

Unix shell 脚本 - 如何在 [for .. in `find .... <variable value>`] 语句中使用变量值

SQL使用变量值

SQL Server:如何从文件中读取变量值

下载zip并使用Shell脚本将.js文件中的变量值替换为另一个值

更改 AWK 条件块内的 Shell 脚本变量值

无法从 shell 脚本更改环境变量值

将变量值形式的Shell脚本复制到常量文件

如何在Shell脚本中运行SQL

如何在shell脚本中的for循环中传递变量值

在Shell脚本中的Math表达式中使用变量值

Jenkins脚本化管道:无法在Shell中打印变量并在Shell中设置变量值

在POSIX shell中,如何打印变量值的值

如何从Node.js访问Shell变量值?

如何在Popen中获取Shell变量值

如何在shell脚本中将一个变量值分配给另一个变量

SQL输出变量值

如何在python中的shell命令中使用变量值?

Shell脚本将sql查询分配给变量

无法通过Shell脚本运行Spark SQL

shell脚本,可从存储在文本文件中的变量列表中进行“更新” sql命令

将 SQL 查询结果卸载到变量而不是 shell 脚本上的文件

Bash 脚本 shell 输入变量

如何从 PL/SQL for 循环中获取旧变量值?

打印变量值将打印字符串Shell脚本