Bash - curl脚本,使用选项运行

时间:2012-04-27 21:38:48

标签: bash

我正在尝试在卷曲后运行脚本,但有一个选项 - 我收到错误:/usr/bin/install: /usr/bin/install: cannot execute binary fil

curl https://raw.github.com/gist/2513225/a39232a94b25741ddb25e15755bddd5d71999b85/give-tourettes.sh | sh install

什么语法错了?只是一些星期五的诡计...

1 个答案:

答案 0 :(得分:1)

显然,curl无法接受sh向其标准输出发送的内容。如果我不得不猜测,文件的第一行是#!/bin/bash\r,其中\r是回车符(CR),系统找不到名称中带有CR的文件。 (并且错误报告令人困惑,因为CR破坏了显示。)

也许你应该在将输出提交给shell之前通过tr -d '\015'管道输出。

URL=https://raw.github.com/gist/2513225/a39232a94b25741ddb25e15755bddd5d71999b85/give-tourettes.sh
curl "$URL" |
tr -d '\015' |
sh install

有关相关问题,请参阅:bash: injecting variable into string adds extra \r

针对此假设sh install尝试将当前目录中的文件install作为shell脚本运行。这可能行不通。您的意思是将其导管到sh以执行tourettes.sh吗?或者您期望install读取其标准输入(如果是,为什么)?

“失去回车”的建议部分相关;你不希望CR在数据中,但它可能不是唯一的,甚至是主要的问题。