c# - 将 Windows 文件格式转换为 Linux 格式

标签 c# linux azure azure-functions

我使用 Linux 计算机进行开发,然后将我的脚本文件部署到 Windows 计算机 Azure 函数应用程序。

然后我将 shell 脚本文件从 Azure 函数应用复制到 wasb。

在 Azure HDI 群集上的边缘节点中运行 shell 脚本时出现以下错误

$'\r': command not found

我的脚本文件未正确执行。

在 C# Azure 函数中转换 dos2unix 选项的最佳方法是什么?

最佳答案

您无需执行任何特殊操作即可读取包含 Unix 样式换行符 (\n) 而不是 \r\n 的文件。 .NET IO 方法将两者都视为换行符。

你可以这样写

var lines-File.ReadAllLines("myUnixText.txt");

using(var reader=File.OpenText("myUnixText.txt"))
{
    string line;
    while( (line=reader.ReadLine()) !=null)
    {
        // Do something
    }
}

读取行,无论行结尾是\r还是\n

证明这一点:

var numbers = new[]{1,2,3,4,5,6};
var lines=String.Join("\n",numbers);
File.WriteAllText("myUnixText.txt",lines);

var newLines=File.ReadAllLines("myUnixText.txt");

Debug.Assert(newLines.Length==6);

即使只写入了单个字符串,File.ReadAllLines也从文件中读取了 6 行

关于c# - 将 Windows 文件格式转换为 Linux 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46926498/

相关文章:

c# - 让1个线程同时执行多个方法

c# - 正确处理空值

c# - button.click 事件发生时如何获取按钮名称/标签?

linux - 如何在 Linux 中安装/设置 XMLStarlet?

坐标传递给 XDrawImageString()

自 2021 年 11 月 1 日起,消息传递服务已弃用 Azure 服务管理 API,并替换为 Azure 资源管理 API

c# - ASP.NET MVC设计问题

node.js - 部署 Angular 2 项目时,Azure 持续部署在 Github 上失败

Node.js pm2 几乎每秒都会重新启动

c++ - Qt 5.8(ubuntu 16.04)在Linux上的应用部署