shell脚本中的导出变量不起作用

时间:2018-04-09 12:51:34

标签: linux shell unix sh echo

我正在尝试导出少量变量并使用shell脚本调用spark-submit。但是,导出变量未按预期打印。请在下面找到代码并帮助我解决问题。

export BASE_LOCATION=/home/hduser/hdm
export EXT_LIB=$BASE_LOCATION/extlib
echo $EXT_LIB

export EXT_LIB_JARS=$EXT_LIB/common-csv-1.1.jar:$EXT_LIB/spark-csv_2.10-1.5.0.jar    
echo $EXT_LIB_JARS

我期待/home/hduser/hdm/extlib的输出为echo $EXT_LIB

但我收到的输出为/libe/hduser/hdm

同样echo $EXT_LIB_JARS没有给出理想的结果。

请帮我解决此问题。

此致 Adarsh K S

2 个答案:

答案 0 :(得分:1)

当BASE_LOCATION最后有$'\r'时($EXT_LIB apennds /lib,而不是/extlib),我得到你所描述的输出。< / p>

#! /bin/bash
export BASE_LOCATION=/home/hduser/hdm$'\r'
export EXT_LIB=$BASE_LOCATION/lib
echo $EXT_LIB

也许您在MSWin上编辑了脚本并将其行尾插入其中?或者从MSWin的文件中提取值?

只需从值中删除\r即可。

答案 1 :(得分:-1)

您正在编辑的文件可能是针对其他用户的,或者您没有以正在编辑的conf文件的用户身份登录。 如果它是那么我会冒险猜测还有更多的行,并且它在conf脚本之后的某处设置为其他东西,甚至动态保持直到重新启动时通过安装脚本进行设置。