因此,我将从 sql 查询返回的第一列的值存储在变量(var
)中。它应该是数组类型,因为 sql 查询返回多行,稍后,这些值将用于命令。
我不知道如何在 shell 脚本中使用不同的变量依次运行相同的命令。
var=`app/oracle/product/10.2.0/bin/sqlplus -s user/passwd<< !EOF!
set pages 0 echo off feed off timing off
select entity_name,uid,set_date from table_name;
exit
!EOF!`
要运行的命令如下所示:
X=$var Y=`date` ./test.sh
答案1
你的要求不清楚。您可以修改脚本吗?如果没有,并且它明确依赖于X
和Y
变量,则您将需要一个临时/循环变量。要test.sh
对每个数组元素运行,请尝试for
循环(除非任何元素中存在空格字符):
for TMP in "${var[@]}"; do X="$TMP" Y=$(date) ./test.sh; done
答案2
您不需要将数据库查询的输出存储在一个变量中。
app/oracle/product/10.2.0/bin/sqlplus -s user/passwd <<END_SQL | while IFS= read -r thing; do X="$thing" Y="$(date)" ./test.sh; done
set pages 0 echo off feed off timing off
select entity_name,uid,set_date from table_name;
exit
END_SQL
这将读取命令的输出,并为每一行调用一次脚本,并在此过程中sqlplus
设置环境变量的值。X
Y