gpt4 book ai didi

linux - 将信息保存为一系列管道中间的变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:04 24 4
gpt4 key购买 nike

我正在尝试在一系列管道中保存有关中间文件的一些信息。可以从前几十行中收集到这些信息,因此理想情况下我不希望对整个事情进行两次处理。

我想要的最终结果是一个存储为变量的整数值,然后脚本可以将其用于下一步。

我目前的情况是

samtools bamshuf -Ou test.bam tmp | tee >($(eval READ_LEN=$(awk '{print length($10)}' | head -100 | sort -u))) | samtools bam2fq - | gzip -f > $OUT

我希望 READ_LEN 包含输入文件中第 10 列的前 100 行的第一个排序长度。

当我运行它时,我没有收到任何错误,但是 READ_LEN 没有设置。我假设这是因为使用了 eval,所以 stdout 没有通过管道传输到 awk

如何在一系列管道中间将信息保存到这样的变量中?

最佳答案

变量 READ_LEN 在子 shell 中设置(因为它包含在 "$(...) 中。当子 shell 退出时变量被销毁。捕获值并在父 shell 中设置变量. 像

while read value; do
[ -n "$READ_LEN" ] && READLEN+=" "
READ_LEN+=$value
done < <(samtools bamshuf -Ou test.bam tmp | awk '{print length($10)}' | head -100 | sort -u)

然后使用 READ_LEN 进行剩余的处理

关于linux - 将信息保存为一系列管道中间的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026379/

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