通过管道读取命令行参数

时间:2014-07-11 15:04:27

标签: linux bash shell curl

我正在运行一个shell脚本,将其传递给sh。例如:

curl commands.io/count-duplicate-lines-in-a-file | sh

我能弄清楚如何传递文件名的唯一方法是使用:

read file </dev/tty

您可以在此处查看脚本: Count duplicate lines in a file

是否有另一种方法可以将文件名作为参数传递给脚本而无需先将其保存到本地文件,设置权限并运行它?

您的想法是,您可以使用Monitor捕获终端输入/输出,然后使用curl管道传输到sh从命令行重新运行它。

1 个答案:

答案 0 :(得分:1)

使用-s选项:

echo 'echo "$@"' | sh -s 1 2 3 4

输出:

1 2 3 4

另一种方法是在shell支持的情况下使用进程替换:

bash <(echo 'echo "$@"') 1 2 3 4