从文件中读取路径值,附加字符串覆盖 shell linux 中的变量

Reading pathvalue from file, appending string overwriting the variable in shell linux

我的输入文件:env.properties

JAVA_HOME=/home/Desktop/jdk1.7.0_67

Shell代码:

ENVPROPERTIES=env.properties
JAVA_HOME=$(awk -F '[ ="]+' '=="JAVA_HOME"{printf }' $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 文件是一个以 CRLF 作为换行符的 DOS 文件,因此您在 JAVA_HOME 中选择了一个回车符 return。在输入文件上尝试 dos2unix,或手动编辑它以使用 LF 作为换行符。