gpt4 book ai didi

linux - shell 错误地读取在 Windows 中创建的文件

转载 作者:太空狗 更新时间:2023-10-29 11:13:02 26 4
gpt4 key购买 nike

这是我的 shell 脚本和属性文件

测试.sh

#!/bin/bash
source ./default.properties
echo $app_name
echo "$app_name =="

默认属性

app_name=TestApplication

开始时,我在我的 Windows 上的 intellij 中创建了 test.shdefault.properties 文件。然后我复制到 Linux 并执行 test.sh。但是,我得到了结果:

TestApplication
==tApplication

然后我使用 vim 创建具有相同内容的新 default.properties。我得到了正确的结果

TestApplication
TestApplication ==

使用 diff 命令,它们确实不同,但我没有发现不同之处

diff default.properties default.properties_2
1c1
< app_name=TestApplication
---
> app_name=TestApplication

我在 Windows 上创建的文件中是否有一些不可见的字符,或者一些编码问题?

最佳答案

是的,您在分配 appName 变量的行末尾有一个 DOS 回车符。在大多数终端中,此控制字符会使光标移回行首。

不错的收获;这里的大多数提问者甚至都没有意识到这是一个问题。 bash tag wiki有一节是关于解决这个问题的。

Unix 上的许多工具会将有问题的字符显示为^M(control-M)或其八进制代码\015;十六进制是字符代码 0x0D,十进制是 13。

将来,如果您绝对必须使用 Windows 编辑器,使用 Unix 行尾保存,使用 ftp ASCII 模式传输文件(现在不是流行或安全的选项),或者运行dos2unix 传输后在 Unix 上的文件。

关于linux - shell 错误地读取在 Windows 中创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33772046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com