0

我有一个脚本,它如下所示,

instant_client="/root/ora_client/instantclient_11_2"

output=`$instant_client/sqlplus -s HRUSER/HRUSER@TOMLWF <<EOF
set heading off
set feedback off
set lines 10000
set pagesize 10000
select count (1) from onboardingcandidates o, candidatedetails c where o.candidateid=c.candidateid and o.JOININGSTATUS='0091' and to_date(o.joiningdate)=to_date(sysdate+5);
EOF
exit
`

query=(`$instant_client/sqlplus -s HRUSER/HRUSER@TOMLWF <<EOF
set heading off
set feedback off
set lines 10000
set pagesize 10000
select o.candidateid from onboardingcandidates o, candidatedetails c where o.candidateid=c.candidateid and o.JOININGSTATUS='0091' and to_date(o.joiningdate)=to_date(sysdate+5);
EOF`)
i=0
echo "Throwing individual arrays:"
while [ $i -lt $output ]
do
    a=${query[$i]}
    echo Candidate[$i]=$a
    i=$(($i+1))
done

输出:

Throwing individual arrays:
Candidate[0]=cand1
Candidate[1]=cand2
Candidate[2]=cand3
Candidate[3]=cand62

所需输出

一切正常。

我需要的是,我一次需要 1 个输出。

即,如果我运行上面的脚本,那么应该控制输出。

它应该在提示符下一次抛出 1 个输出。

这可能吗 ??

如果您还需要什么,请询问。我希望我能清楚我的怀疑

4

2 回答 2

1

所以你正在运行两个查询,一个是获取结果的数量,第二个是获取结果。

如果您只想有一个查询,您可以遍历结果数的计数。由于变量query是一个数组,您可以使用:

${#query[*]}

作为结果行数,然后使用:

while [ $i -lt ${#query[*]} ]

作为循环条件。

如果您想一次显示一个结果,并且需要在它们之间输入,那么您可以read在回显之后添加一个。

如果要显示特定的返回行,那么,假设例程按原样调用,那么要显示的行号作为第一个参数传入$1,那么可以使用:

a=${query[$1]}
echo Candidate[$1]=$a

如果您只想在该行显示结果而不显示Candidate[]文本,那么您可以回显:

echo ${query[$1]}
于 2012-11-01T13:33:54.807 回答
1

如果我正确理解了您的问题,在您的 echo 语句打印输出之前,请输入以下行:

read dummy

这将提示您输入一些键,输入后将显示下一行输出。

于 2012-11-01T13:35:42.310 回答