【发布时间】:2021-10-25 21:24:40
【问题描述】:
在我的 bash 脚本中,我想使用 beeline 发出“显示分区”命令,然后遍历作为该命令输出的分区。该命令工作正常,但我不知道如何迭代迭代。这是我的代码:
#!/usr/bin/env bash
PARTITIONS=$(/usr/bin/beeline -u "$hive_llap" --showHeader=false --outputformat=csv2 -e "use my_db; show partitions my_hist_table;")
echo -e "PARTITIONS: ${PARTITIONS}"
IFS=$'\n' read -ra ptns <<< "${PARTITIONS}"
echo "ptns: ${ptns}"
for ptn in "${ptns[@]}"; do
echo "ptn: ${ptn}"
done
这是输出:
PARTITIONS: yr=2021/mo=08
yr=2021/mo=2
yr=2021/mo=4
ptns: yr=2021/mo=08
ptn: yr=2021/mo=08
似乎输出正确地进入了 $PARTITIONS,但是我尝试将其放入数组 ptns 中的尝试不起作用。我曾尝试在 IFS 语句中使用 outputformat=tsv2 和 \t,但我得到了同样的结果,即 $PARTITIONS 显示的内容显然是换行符(不是制表符,即使在使用 tsv2 时也是如此)。
【问题讨论】:
-
@markp-fuso 第一个建议成功了,谢谢!如果你想创建一个答案,我会检查它是否已接受