gpt4 book ai didi

bash - 使用 tee 将标准输出加载到一行中的变量中

转载 作者:行者123 更新时间:2023-12-02 04:09:36 24 4
gpt4 key购买 nike

我正在尝试将 gzip 压缩文件中的行数放入变量中,稍后我计划将此标准输出用于使用 tee 的另一个进程。为什么 wc -l 的值不会放入变量中?如何解决此问题?

[]$ gzip -dc BC102.fastq.gz | wc -l
4255588
[]$ gzip -dc BC102.fastq.gz | echo $(wc -l)
4255588
[]$ gzip -dc BC102.fastq.gz | reads=$(wc -l); echo $reads
0

整条线最终应该看起来像

gzip -dc BC102.fastq.gz | tee >(reads=$(wc -l)) | cutadapt -ga...

我不明白这怎么与 How to set a variable to the output from a command in Bash? 重复。因为我已经应用那里列出的答案来直接回显 wc -l 的值,但它不会被插入到变量中。

最佳答案

tee写入标准输出以及作为参数给出的所有文件。它不会写入您可以附加的两个不同的管道。

试试这个:

t=$(tempfile)
reads=$(gzip -dc BC102.fastq.gz | tee $t | wc -l)

现在您可以继续编写脚本

cutadapt -ga $t

while reads 包含行数。

关于bash - 使用 tee 将标准输出加载到一行中的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37412659/

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