我有这样的文件格式(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)
并希望将文件名的值存储在像 OMEGA,sample,sample(1) 这样的表中。为此,我使用了这样的代码
FILE_NAME=$(echo "$line"| awk -F / '{ print $NF }' "$BASE_PATH/publishfile.txt")
echo FILE_NAME
这里 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
但在这里文件名 仅存储插入表中的样本(1) 如何确保变量的整个值进入文件名 它存储
OMEGA sample sample(1)
其中的值(value)
最佳答案
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 中打印:
hive> select '${hivevar:var}';
OK
one two three
关于linux - hivevar 忽略空格后的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60044563/