shell在for或while循环中读取和传递多个变量

kqhtkvqz  于 2021-04-09  发布在  Hive
关注(0)|答案(1)|浏览(606)

下面是我的输入文件和我正在使用的文件代码。

cat $TESTFILE
2020-01-13,COST_CH_RPT
2018-04-19,LOSS_CH_RPT

代码 :

for i in `cat $TESTFILE`
do
   export date=`cat $TESTFILE|cut -d',' -f1`
      echo date=$date
   export Name=`cat $TESTFILE|cut -d',' -f2`
      echo Name=$Name
beeline --outputformat=csv2 --hivevar Name=$Name --hivevar date=$date  -u ${beeURL} -f TEST.hql
done

目标是为文件中的每一行运行hql文件,上面的代码是为两行可用的运行两次,但两次运行所传递的变量是相同的,也就是文件中的第一行。我如何才能区分每次运行的输入变量。

zazmityj

zazmityj1#

更简单的方法是使用'read'来循环处理这几行。

while IFS=, read date Name ; do
    echo beeline --outputformat=csv2 --hivevar Name="$Name" --hivevar date="$date"  -u "${beeURL}" -f TEST.hql
done < $TESTFILE

建议使用引号来防止输入文件中的错误--尤其是空格,因为空格会 "break"命令行。

相关问题