对 shell 脚本中的各种变量运行命令

对 shell 脚本中的各种变量运行命令

因此,我将从 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

你的要求不清楚。您可以修改脚本吗?如果没有,并且它明确依赖于XY变量,则您将需要一个临时/循环变量。要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设置环境变量的值。XY

相关内容