【问题标题】:reading command line arguments through pipe to sh通过管道读取命令行参数到 sh
【发布时间】:2014-07-11 15:04:26
【问题描述】:

我正在运行一个 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 从命令行重新运行它。

【问题讨论】:

  • 有更好的方法来做到这一点
  • 使用curl 而不是cat 有什么意义?
  • commands.io/count-duplicate-lines-in-a-file 是网络上的资源——不在我的本地机器上。

标签: linux bash shell curl


【解决方案1】:

使用-s 选项:

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

输出:

1 2 3 4

如果 shell 支持,另一种方法是使用进程替换:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 2021-10-16
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多