将静态变量传递给 GNU Parallel
Passing static variables to GNU Parallel
在 bash 脚本中,我试图将多个不同的 fastq 文件和几个用户提供的静态变量传递给 GNU Parallel。我不能对静态变量进行硬编码,因为虽然它们在脚本中不会改变,但它们是由用户设置的,并且在使用之间是可变的。我尝试了几种不同的方法,但出现错误 argument -b/--bin: expected one argument
尝试 1:
binSize="10000"
outputDir="output"
errors="1"
minReads="10"
ls fastq_F* | parallel "python myscript.py -f split_fastq_F{} -b $binSize -o $outputDir -e $errors -p -t $minReads"
尝试 2:
my_func() {
python InDevOptimizations/DemultiplexUsingBarcodes_New_V1.py \
-f split_fastq_F \
-b $binSize \
-o $outputDir \
-e $errors \
-p \
-t $minReads
}
export -f my_func
ls fastq_F* | parallel my_func
很明显我没有正确传递静态变量...但我似乎无法理解正确的方法是什么。
当 GNU Parallel 没有按照您的预期运行时,总是尝试 --dr
。
binSize="10000"
outputDir="output"
errors="1"
minReads="10"
ls fastq_F* | parallel --dr "python myscript.py -f split_fastq_F{} -b $binSize -o $outputDir -e $errors -p -t $minReads"
您使用的是 " 而不是 ',因此在 GNU Parallel 启动之前应将变量替换为 shell。
如果命令是 运行 本地(即非远程),您可以使用 export VARIABLE
.
如果 运行 在远程服务器上,使用 env_parallel
:
env_parallel --session
alias myecho='echo aliases'
env_parallel -S server myecho ::: work
myfunc() { echo functions $*; }
env_parallel -S server myfunc ::: work
myvar=variables
env_parallel -S server echo '$myvar' ::: work
myarray=(arrays work, too)
env_parallel -k -S server echo '${myarray[{}]}' ::: 0 1 2
env_parallel --end-session
在 bash 脚本中,我试图将多个不同的 fastq 文件和几个用户提供的静态变量传递给 GNU Parallel。我不能对静态变量进行硬编码,因为虽然它们在脚本中不会改变,但它们是由用户设置的,并且在使用之间是可变的。我尝试了几种不同的方法,但出现错误 argument -b/--bin: expected one argument
尝试 1:
binSize="10000"
outputDir="output"
errors="1"
minReads="10"
ls fastq_F* | parallel "python myscript.py -f split_fastq_F{} -b $binSize -o $outputDir -e $errors -p -t $minReads"
尝试 2:
my_func() {
python InDevOptimizations/DemultiplexUsingBarcodes_New_V1.py \
-f split_fastq_F \
-b $binSize \
-o $outputDir \
-e $errors \
-p \
-t $minReads
}
export -f my_func
ls fastq_F* | parallel my_func
很明显我没有正确传递静态变量...但我似乎无法理解正确的方法是什么。
当 GNU Parallel 没有按照您的预期运行时,总是尝试 --dr
。
binSize="10000"
outputDir="output"
errors="1"
minReads="10"
ls fastq_F* | parallel --dr "python myscript.py -f split_fastq_F{} -b $binSize -o $outputDir -e $errors -p -t $minReads"
您使用的是 " 而不是 ',因此在 GNU Parallel 启动之前应将变量替换为 shell。
如果命令是 运行 本地(即非远程),您可以使用 export VARIABLE
.
如果 运行 在远程服务器上,使用 env_parallel
:
env_parallel --session
alias myecho='echo aliases'
env_parallel -S server myecho ::: work
myfunc() { echo functions $*; }
env_parallel -S server myfunc ::: work
myvar=variables
env_parallel -S server echo '$myvar' ::: work
myarray=(arrays work, too)
env_parallel -k -S server echo '${myarray[{}]}' ::: 0 1 2
env_parallel --end-session