如何从URL下载脚本,执行脚本,并将某些内容输入其中--所有这些都只需一个命令即可?
我有一个shell脚本,我可以对其进行管道:
$ echo "Test Data" | do-stuff.sh脚本被移动到http://example.com/do-stuff.sh
试着做这样的事情:
$ echo "Test Data" | ( curl -sfL http://example.com/do-stuff.sh | sh )但不起作用。数据不会通过管道传输到脚本中。
有一个解决办法,但是如何在不创建文件的情况下用一行来实现呢?
$ curl -sfL http://example.com/do-stuff.sh > do-stuff.sh
$ chmod +x do-stuff.sh
$ echo "Test Data" | do-stuff.sh
$ rm do-stuff.sh发布于 2022-06-14 03:28:35
试一试
echo "Test Data" | sh <(curl -sfL http://example.com/do-stuff.sh)这需要在bash、zsh或ksh中运行,这是由于进程子结构造成的。
您的进程不能工作的原因是,sh进程的stdin通道已经被读取源代码占用了,所以您无法将数据输送到其中。
进程替换的作用类似于文件,因此sh可以从“文件”中获取源,并仍然从stdin读取数据。
发布于 2022-06-14 02:30:34
假设脚本的链接包含原始数据而不进行任何转换,那么您可以尝试这种方法。
echo "Test Data" | bash <(wget -O - http://example.com/do-stuff.sh)https://stackoverflow.com/questions/72610852
复制相似问题