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

标签 linux bash shell append

我的输入文件: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/

相关文章:

bash - Mercurial 大号

bash - egrep 结果到 vim 作为行引用的文件列表

c - 如何在客户端服务器模型中通过套接字发送和接收换行符?

security - 防止提取有害的 gzip 文件

linux - 安装 Windows 10 后如何安装 grub

linux - 如何获取top命令的输出

linux - 查找字符串是否直接或间接存在于所有文件中

linux - 在 linux 服务器机器中提取 .war

c - 如何像 ps -e 一样显示进程

android - 打包自定义 Android boot.img 报错