我编写了一个teradata查询函数,它返回结果,当它返回一列时,我可以很容易地将它存储到变量中。但是现在我想返回多个列并将其存储到一个数组中(我假设),以便我可以通过if语句对第二列结果运行比较操作。
目前我的teradata功能如下:
#!/bin/ksh
td_query () { bteq << EOF |grep '^>' |sed -e "s/^>//"
$(cat $HOME/.tdlogon)
.set width 1000;
.set titledashes off;
$1
.LOGOFF;
.QUIT;
.EXIT
EOF
}
然后我可以将查询传递给函数并将其存储为变量:
rwCnt=$(td_query "select '>'||count(*) from table;")
我想要做的是查询像这样的事情
arryData=$(td_query "select '>'||ColA, ColB from table;")
以每行的方式存储,如果ColB等于某个值,则使用ColA中的值作为ksh脚本中的另一个过程。
答案 0 :(得分:2)
OP确认评论中的建议有效:
将输出管道传输到另一个命令(OP使用SED)来替换|用新的一行,
并使用
| while IFS="," read ColA ColB; do
echo "Cola = ${ColA}"
echo "Colb = ${ColB}"
done