使用各种方法在 GitHub 中执行远程 Bash 脚本失败 - 可能是由于 Windows10

使用各种方法在 GitHub 中执行远程 Bash 脚本失败 - 可能是由于 Windows10

我有这个远程 Bash 脚本在 GitHub 中,我已经成功地逐行执行了几次(在不同的版本中)。

由于每次测试都复制粘贴所有行非常令人沮丧,因此我尝试通过其执行远程 Bash 脚本原始形式curl,但它在各种尝试中失败:

bash <(curl -s https://raw.githubusercontent.com/benqzq/uncwe/master/install.sh)

或者

curl -s https://raw.githubusercontent.com/benqzq/uncwe/master/install.sh | bash

大约 3 秒后,两者都完全失败,并出现错误:

/dev/fd/63: 第 7 行: $'\r': 找不到命令

我推测我可能需要翻译所有回车符,因此尝试:

curl -s https://raw.githubusercontent.com/benqzq/uncwe/master/install.sh | tr -d '\r' | bash

这导致了脚本的部分执行。例如,虽然apt-get installexportgit clonerm -rf ${repo}/.git/和其他一些操作运行良好,但对一些带有前导选项卡的文件的wget/unzip和处理无法正确处理。

我认为 GitHub GUI 可能在代码的某些部分将前导空格从制表符更改为空格,反之亦然,因此我尝试将所有前导空格更改为表格:

curl -s https://raw.githubusercontent.com/benqzq/uncwe/master/install.sh | sed "s/^ */\t/" | tr -d '\r' | bash

结果似乎与上一个相同。

由于这4种方法都失败了,我想知道还有什么可用的。遗憾的是我还没有在谷歌中找到其他例子。

也许我遇到这些问题是因为我通常在 Windows 10 上工作,并且回车符会添加到每个文件中,但有人可能会问为什么代码示例中的“将它们翻译出来”会导致执行错误。

答案1

我能够使用 解决它dos2unix

我安装了它:

sudo apt-get update
sudo apt-get install dos2unix

然后我运行curl,将内容下载到stdout。我通过管道传输标准输出中的内容dos2unix来更改它,然后通过管道bash来执行它。

sudo curl -s https://raw.githubusercontent.com/benqzq/ulcwe/master/install.sh | dos2unix | bash

相关内容