bash函数参数和管道同时进行

时间:2016-07-17 11:59:38

标签: bash

我写了一个简短的超级简单脚本(来自考试的问题),它作为参数log.txt文件(只是一个包含大量日期的文件),并创建一个包含一些排序值的temp.txt - - 我有这个代码行:

cat $1 | date_isolate | sort | uniq | create_relevant $1

$1应该是log.txt参数。

问题:我的函数create_relevant - 它通过管道得到标准输入,我希望它得到另一个参数log.txt - 我如何标记函数中的每个参数?它是管道的$1$2的{​​{1}}还是log.txt的{​​{1}},我是通过$1从管道读取的?

1 个答案:

答案 0 :(得分:0)

由于create_relevant STDIN 获取输入,因此最一致的接口是将其输出发送到 STDOUT 。所以整个管道看起来像:

date_isolate < "$1" | sort -u | create_relevant > temp.txt

或者,使用这个懒惰版本避免temp.txt

date_isolate < "$1" | sort -u | create_relevant | sponge "$1"

sponge是一个实用程序,它可以阻止&#34; $ 1 &#34;被覆盖直到它应该被覆盖。)