通过管道执行的脚本(例如 curl xxx.com | sh)有办法拿到当前脚本内容吗?

2019-05-29 16:43:50 +08:00
 mytry

如果先下载到本地文件再执行,可以通过 $0 拿到当前脚本的路径,之后可以进行复制等操作。

但通过例如 curl xxx.com | sh 这种方式执行,还能优雅拿到当前运行的脚本内容吗?重复 curl 一次不算,预先把整个脚本的内容当做字符串不算。

最好有类似 JS 里可以把函数 toString 的方法,外表仍然是可执行的代码,但可以运行时转成字符串数据。不知道 shell 或 bash 里能否实现~

5524 次点击
所在节点    程序员
24 条回复
pkookp8
2019-05-30 01:17:42 +08:00
自己做一个 shell
ihipop
2019-05-30 08:50:57 +08:00
@ipwx 你这太麻烦了。中间管道换成 tee 就行了
hasdream
2019-05-30 10:04:35 +08:00
curl ww.a.com/a.sh | python -c 'import sys;stdin=sys.stdin.read();f=open("/tmp/a.sh", "w");f.write(stdin);f.flush();sys.stdout.write(stdin);sys.stdout.flush()' | sh
no1xsyzy
2019-07-09 12:24:05 +08:00
quine?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568824

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX