gpt4 book ai didi

bash - 在 bash 脚本中读取函数中的标准输入

转载 作者:行者123 更新时间:2023-11-29 08:41:36 25 4
gpt4 key购买 nike

我有一些输出一些信息的 bash 函数:

  • 在 epson-ppds 中查找模型名称
  • 在 samsung-ppds 中查找型号名称
  • 在 hp-ppds 中查找模型名称
  • 等...

我一直在编写读取输出并过滤它的函数:

function filter-epson {
find-modelname-in-epson-ppds | sed <bla-blah-blah>
}

function filter-hp {
find-modelname-in-hp-ppds | sed <the same bla-blah-blah>
}
etc ...

但我认为这样做会更好:

function filter-general {
(somehow get input) | sed <bla-blah-blah>
}

然后调用另一个高级函数:

function high-level-func {
# outputs filtered information
find-modelname-in-hp/epson/...-ppds | filter-general
}

我如何通过最佳 bash 实践实现这一目标?

最佳答案

如果问题是How do I pass stdin to a bash function?,那么答案是:

Shellscript 函数以普通方式接收 stdin,就好像它们是命令或程序一样。 :)

输入.txt:

HELLO WORLD
HELLO BOB
NO MATCH

测试.sh:

#!/bin/sh

myfunction() {
grep HELLO
}

cat input.txt | myfunction

输出:

hobbes@metalbaby:~/scratch$ ./test.sh 
HELLO WORLD
HELLO BOB

请注意,命令行参数也以普通方式处理,如下所示:

测试2.sh:

#!/bin/sh

myfunction() {
grep "$1"
}

cat input.txt | myfunction BOB

输出:

hobbes@metalbaby:~/scratch/$ ./test2.sh 
HELLO BOB

关于bash - 在 bash 脚本中读取函数中的标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14004756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com