这有道理吗?我需要“编辑”插槽以将其转换为 GPU 板号,但如果我使用多个输入列表,它会将多个 Perl 结果副本放入并行命令中。
是否有一种正确的方法可以在保留“:::”语法的同时仅获取一个 perl 替换实例?
GNU parallel 20230822
Copyright (C) 2007-2023 Ole Tange, http://ole.tange.dk and Free Software
Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
GNU parallel comes with no warranty.
Web site: https://www.gnu.org/software/parallel
When using programs that use GNU Parallel to process data for publication
please cite as described in 'parallel --citation'.
bash-4.2$ parallel --dry-run --jobs 3 echo {= '$_=slot()-1' =} ::: 1 2 3 4
echo 0
echo 1
echo 2
echo 0
bash-4.2$ parallel --dry-run --jobs 3 echo {= '$_=slot()-1' =} ::: 1 2 3 4 ::: a b c
echo 0 0
echo 1 1
echo 2 2
echo 0 0
echo 1 1
echo 2 2
echo 0 0
echo 1 1
echo 2 2
echo 0 0
echo 1 1
echo 2 2
bash-4.2$ parallel --dry-run --jobs 3 echo {= '$_=slot()-1' =} ::: 1 2 3 4 ::: a b c ::: 1
echo 0 0 0
echo 1 1 1
echo 2 2 2
echo 1 1 1
echo 0 0 0
echo 2 2 2
echo 1 1 1
echo 0 0 0
echo 2 2 2
echo 1 1 1
echo 0 0 0
echo 2 2 2
我偶然发现了一种获得我期望的行为的方法:
bash-4.2$ parallel --dry-run --jobs 3 echo {=1 '$_=slot()-1' =} ::: 1 2 3 4 ::: a b c
echo 1
echo 0
echo 2
echo 1
echo 0
echo 2
echo 1
echo 0
echo 2
echo 1
echo 0
echo 2
不太清楚为什么,但它确实有效。