linux - hivevar 忽略空格后的值

标签 linux shell variables hive hiveql

我有这样的文件格式(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/

相关文章:

linux - 重命名文件并删除 shell PID 作为扩展名

php - 不区分大小写的 Shell 命令不适用于 PHP Exec

javascript - 如何使用正则表达式与变量而不是字符串?

variables - 批处理脚本帮助 - 将 DelayedExpansion Var 的子字符串替换为另一个 DelayedExpansion Var

variables - 速度:检查变量是否已定义的任何方法

linux - 仅查找从当前目录开始且设置了 setuid 位的文件

C - 外部汇编函数使用相同的输入返回不同的结果

linux - 对于冒号前的字段与模式匹配的行,在冒号后提取字段

shell - 从 Dataproc 集群执行 Spark 作业时,执行程序检测信号在 125009 毫秒后超时

linux - Bash:仅允许脚本通过从另一个脚本调用来运行