我的输入文件:env.properties
JAVA_HOME=/home/Desktop/jdk1.7.0_67
shell 代码:
ENVPROPERTIES=env.properties
JAVA_HOME=$(awk -F '[ ="]+' '$1=="JAVA_HOME"{printf $2}' $ENVPROPERTIES)
echo $JAVA_HOME/bin
->将给出:/bine/Desktop/jdk1.7.0_67
甚至尝试使用 while 循环阅读::
set -f; IFS==
while read a b line
do
echo $a/bin
echo $b/bin
done < $ENVPROPERTIES
set =f; unset IFS
将给出输出::
JAVA_HOME/bin
/bine/Desktop/jdk1.7.0_67
不知何故,它覆盖了 Path 的变量,但与其他值一起使用,例如 JAVA_HOME。
最佳答案
简单。您的 env.properties
文件是一个 DOS 文件,以 CRLF 作为换行符,因此您在 JAVA_HOME
中获取了一个回车符。在输入文件上尝试 dos2unix
,或手动编辑它,以便使用 LF 作为换行符。
关于linux - 从文件中读取路径值, append 字符串覆盖shell linux中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29621381/