【发布时间】:2019-07-26 09:05:01
【问题描述】:
我正在尝试在bash 中执行以下操作:
>>> import glob
>>> FILES = glob.glob("testing_output/test/intermediate/metawrap_output/initial_binning/*_bins")
>>> " ".join(map(lambda x:" ".join(x), zip(["-A", "-B", "-C"], FILES)))
'-A testing_output/test/intermediate/metawrap_output/initial_binning/maxbin2_bins -B testing_output/test/intermediate/metawrap_output/initial_binning/concoct_bins -C testing_output/test/intermediate/metawrap_output/initial_binning/metabat2_bins'
我可以到达FILES 部分,但我不知道如何到达最后一行。我想这样做的原因是有时FILES 中的文件数将是1-3。希望是 3,但有时会是 2 或 1。
我的问题是,根据可用文件的数量,我如何才能在本质上预先添加 -A、-B 和 -C?
也许这会有所帮助:
FILES=("testing_output/test/intermediate/metawrap_output/initial_binning/concoct_bins" "testing_output/test/intermediate/metawrap_output/initial_binning/maxbin2_bins" "testing_output/test/intermediate/metawrap_output/initial_binning/metabat2_bins")
echo ${FILES[*]}
testing_output/test/intermediate/metawrap_output/initial_binning/concoct_bins testing_output/test/intermediate/metawrap_output/initial_binning/maxbin2_bins testing_output/test/intermediate/metawrap_output/initial_binning/metabat2_bins
我能够做到这一点:
python -c """import glob; FILES = glob.glob('testing_output/test/intermediate/metawrap_output/initial_binning/*_bins'); print(' '.join(map(lambda x:' '.join(x), zip(['-A', '-B', '-C'], FILES))))"""
但我不知道如何将它保存到 bash 变量中。
【问题讨论】:
-
您能否添加示例输入,以便我们可以“玩”我们提出的解决方案?
-
我检查了该链接,但解决方案不清楚。 @Nic3500 如果有帮助,我已经添加了一个数组。
标签: bash iterator glob prepend