#!/bin/bash
export HIVE_OPTS="$HIVE_OPTS -hiveconf mapred.job.queue.name=hdmi-technology"
export HIVE_AUX_JARS_PATH=/home/hadoop/lib/HiveUDF.jar
hive -S -e 'set mapred.job.queue.name=hdmi-technology'
hive -S -e 'SELECT count(*) from testingtable2' > attachment.txt
每当我尝试运行上面的shell脚本(count.sh)时,我总是会遇到错误,我不知道我在做什么错,因为我是shell脚本的新手,我不知道如何添加shell脚本中的环境变量。
bash-3.00$ sh count.sh
count.sh: HIVE_OPTS= -hiveconf mapred.job.queue.name=hdmi-technology^M: is not an
identifier
我在shell脚本中做了什么错,顺便提一下我在前两行添加环境变量?任何帮助将不胜感激。
根据以下评论完成所有更改后,
mv count.sh count,
chmod +x count,
./count
每当我尝试在我的提示中直接export HIVE_AUX_JARS_PATH=/home/hadoop/lib/HiveUDF.jar
时,它工作正常,但每当我尝试在我的问题中提到的shell脚本中添加它时,我总是得到'java.io.FileNotFoundException(File file:/home/hadoop/lib/HiveUDF.jar不存在。为什么会这样?
答案 0 :(得分:2)
您正在运行一个bash脚本,其中sh
命令不是bash。使用./count.sh
运行它以使shebang行生效,或者只说bash count.sh
。
答案 1 :(得分:1)
您在DOS或Windows计算机上编辑了shell脚本,该计算机使用CRLF对(\r\n
)而不是Unix样式的LF('\ n')行结尾。
^M
是告诉 - 它是\r
回车符。
这应该解决它:
tr -d '\r' < count.sh > count.sh.fixed
mv count.sh.fixed count.sh
另一种选择:
sed -i 's/\r//g' count.sh