python - 在curl下载python脚本时添加延迟,然后通过管道执行脚本?

标签 python linux curl pipe

我刚刚创建了一个 rickroll 恶作剧,供 friend 和家人玩。我希望能够使用有效的curl 命令从github 下载文件。我的问题是,当我使用管道并尝试执行脚本时,它会在执行 curl 之后、下载文件之前立即执行。

这是我尝试运行的命令:

curl -L -O https://raw.githubusercontent.com/krish-penumarty/RickRollPrank/master/rickroll.py | python rickroll.py

我也尝试使用 sleep 命令来运行它,但没有任何运气。

(curl -L -O https://raw.githubusercontent.com/krish-penumarty/RickRollPrank/master/rickroll.py; sleep 10) | python rickroll.py

最佳答案

扩展我的评论。

有多种方法可以使用大多数 shell 语言来链接命令(这里我假设使用 sh/bash 方言)。

  • 最基本的:;只会按顺序运行每个命令,在上一个命令完成后开始下一个命令。
  • 条件链接,&& 的工作方式与 ; 相同,但一旦命令返回错误(任何非 0 return code ),就会中止链接。
  • 条件链接,|| 的工作方式与 && 相同,但一旦命令成功就会中止链接(返回 0)。

你在这里尝试做的都不是这些,而是​​ piping 。由 | 触发,它会导致其两侧的命令同时运行,左侧命令的标准输出被输入到右侧命令的标准输入中。

您的第二个示例也不起作用,因为它会导致两个序列并行运行:

  • 第一个序列是curl,完成后接着是sleep
  • 第二个序列是 python 命令,与重定向为其输入的第一个序列写入的任何内容同时运行。

所以修复它:command1 && command2,将运行curl,等待它完成,并且仅在curl成功时运行python

再说一次,您可以使用示例来说明运行不完全理解的命令会造成多大的危害。让您的脚本用红色写“您的所有文件已被删除”,这对于教育人们有关该主题的知识很有帮助。

关于python - 在curl下载python脚本时添加延迟,然后通过管道执行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39129116/

相关文章:

curl - 无法连接到 Elasticsearch(通过 Curl)

php - CURL - 此请求需要 HTTP 身份验证

python - 组合重新标记 re.IGNORECASE、re.MULTILINE 和 re.DOTALL

python - 获取 pandas 数据框的最后 N 个工作日的平均值

python - 如何更改 Python 函数的表示?

python - 将 statsmodels Tukey hsd 保存到 Python pandas 数据框中

linux - 作为 bash 脚本调用时如何替换命令名称?

linux - gnuplot 不能通过 ssh 命令工作

linux - 如何连接服务器电脑和客户端电脑

bash - 为 GNU parallels 优化我的脚本代码