【问题标题】:Shell Script intend to read argument after '|'Shell 脚本打算在“|”之后读取参数
【发布时间】:2020-07-08 14:41:19
【问题描述】:

嗨,我想知道如何阅读“|”之后的参数来自 shell 脚本的管道。

例如,当我运行 ./tmp.sh ls -la |种类 我只能得到 2 个参数,即“ls”和“-la”。

有没有什么方法可以在不修改命令的情况下读取“| sort”,只用shell脚本实现?

非常感谢!!

【问题讨论】:

  • shell 解释命令行并且只将两个参数传递给您的脚本。
  • 很难理解为什么要覆盖 shell 脚本的基本功能。随着您不断扩展此需求以在框架之外工作,您最终必须编写自己的“非 shell”。至少在问题正文中包含一个合理的用例,说明为什么您认为您需要它。您的问题可能还有另一个解决方案 *使用 shell 功能,而不是希望覆盖他们。祝你好运。

标签: linux unix pipe command-line-arguments


【解决方案1】:

我想您可以检查 ps axf,但管道的部分优点在于它们提供的松散耦合,因为 bash 知道管道中的内容,而不是管道的各个部分。这使得编写过滤器变得简单。

【讨论】:

    【解决方案2】:

    一种方法是将整个命令作为字符串传递给您的脚本。

    ./tmp.sh -c "ls -la | sort"
    

    ...或者没有标志...

    ./tmp.sh "ls -la | sort"
    

    之后,您可以split the string into an array in your script

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2012-10-06
      相关资源
      最近更新 更多