【问题标题】:How can I configure and allow pipes in my bash script?如何在我的 bash 脚本中配置和允许管道?
【发布时间】:2015-06-20 17:51:20
【问题描述】:

我是编写 Bash 脚本的初学者,所以我对管道的架构感到困惑。例如,对于grep 之类的基本命令,是否必须以某种方式配置和编程管道才能允许进入命令?还是管道只是自动将输出作为第一个参数传递给正在传输的任何内容?

我的主要问题是说我有一个脚本,它使用my_script.sh text_file 之类的东西将文本作为第一个参数。如果我要做echo Hello | my_script.sh,管道会自动工作吗?或者我必须遵循一些接口来允许管道。

【问题讨论】:

  • echo Hello | my_script.sh 会将 Hello 写入 bash 脚本的标准输入,可以通过 read 命令访问。如果您希望它作为参数使用 my_script.sh $(echo Hello) 实际上等于 my_script.sh Hello
  • 你的脚本不能允许管道,因为它不能禁止管道。

标签: bash unix


【解决方案1】:

在类 Unix 系统中,everything is a file.将命令的输出(同样,它是一个文件)作为输入传递到另一个命令称为 pipe lining(或简称为管道)。

所以当你看到如下一组命令时:

历史 | grep ls |少

history :返回从终端输入的 bash 命令列表。它的输出作为输入输入到 grep 中。 grep ls :查找所有带有“ls”字母的行。 (将其视为某种过滤机制)。再一次,它的最终结果被赋予了 less 作为输入 less : 一次显示全屏信息并等待用户按键。

回到你的问题:为了编写一个从标准输入获取输入的脚本,你必须记住从那里阅读。如果你的脚本是这样写的,那么是的,你可以做到。

Here are a couple of examples,您可以在其中找到如何编写此类脚本。

希望对你有帮助 =]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-22
    • 2018-05-07
    • 2015-06-29
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2016-04-10
    相关资源
    最近更新 更多