sh abc.sh "--hiveconf db_name=${DB_NAM}"
我正在尝试运行这个命令,但在我的shell文件中我没有得到DB_NAM
。
在我的shell中它以
的形式运行--hiveconf db_name=
——hiveconf是hive
命令的参数,在将变量传递给shell脚本时不需要——hiveconf。
如果你想传递已命名的变量给shell脚本,你可以用更干净的方式传递变量:
sh abc.sh db_name=${DB_NAM}
解析shell脚本中的参数:
#Inside the shell script
#parse parameters
for PARAM in "$@"
do
KEY=$(echo $PARAM | cut -f1 -d=)
VALUE=$(echo $PARAM | cut -f2 -d=)
case "$KEY" in
db_name) db_name=${VALUE} ;;
something_else) something_else=${VALUE} ;;
*)
esac
done
#Now you can call Hive with parameter:
hive -hiveconf db_name="$db_name" -f myscript.sql
和在hive脚本myscript。sql:
select * from ${hiveconf:db_name};