hivevar忽略空格后面的值

sg24os4d  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(326)

我有这样的文件格式(publishfile.txt)

drwxrwx---+  h655201 supergroup          0  2019-04-24  09:16  /data/xyz/invisible/se/raw_data/OMEGA
drwxrwx---+  h655201 supergroup          0  2019-04-24  09:16  /data/xyz/invisible/se/raw_data/sample
drwxrwx---+  h655201 supergroup          0  2019-04-24  09:16  /data/xyz/invisible/se/raw_data/sample(1)

并希望将filename的值存储在一个类似omega,sample,sample(1)的表中。为此,我使用了这样的代码

FILE_NAME=$(echo "$line"| awk -F / '{ print $NF }' "$BASE_PATH/publishfile.txt")
echo FILE_NAME

这里文件名的输出是这样的------> OMEGA sample sample(1) 但是当我把它传递给--hivevar时,它只接受sample(1)值,就像我的代码一样

beeline -u $HIVEPATH --hivevar namenode=$NAMENODE --hivevar db=$DB_MASTER$COUNTRY$DB_POSTFIX --hivevar dirlocation --hivevar filename= $FILE_NAME --hivevar queue=$QUEUE_NAME--showHeader=false --showWarnings=true $BASE_PATH/TOM/SCRIPT/hql/insert_data.hql

但这里filename只存储插入表中的sample(1),我如何确保variable的整个值进入filename并存储呢 OMEGA sample sample(1) 它的价值

lmvvr0a8

lmvvr0a81#

shell中的双引号变量:

--hivevar filename="$FILE_NAME"

在这种情况下,包含空格的字符串将作为单个变量传递。
或者你可以这样传递: --hivevar filename=${FILE_NAME} 也是你的 echo 命令应该是 echo "$FILE_NAME" 不是 echo FILE_NAME 变量传递演示:

var="one two three";
echo "$var"

印刷品:

one two three

传给Hive:

hive -hivevar var="$var"

在配置单元中打印:

hive> select '${hivevar:var}';
OK
one two three

相关问题