如何将变量传递给并行命令
How to pass variables to parallel command
如何将不同的值传递给单个 parallel
命令:
我试过这个:
parallel ::: 'X="aa"' 'X="bb"' ::: echo ${X}
只打印两个空行,就好像 X
的值没有设置一样。
我用 echo $X
试过,结果相同。
我希望它能打印出来
aa
bb
好像我有 运行 顺序:
echo "aa"
echo "bb"
不完全清楚你想要什么运行。
你显然不想:
X="aa" echo ${X}
X="bb" echo ${X}
因为那没有输出。
你想要:
X="aa"; echo ${X}
X="bb"; echo ${X}
在这种情况下,您可以执行以下操作之一:
parallel ::: 'X="aa";' 'X="bb";' ::: 'echo ${X}'
parallel {1}\;{2} ::: 'X="aa"' 'X="bb"' ::: 'echo ${X}'
parallel '{}; echo ${X}' ::: 'X="aa"' 'X="bb"'
但是,GNU Parallel 的方法是使用 GNU Parallel 替换字符串而不是 $X:
parallel echo {} ::: aa bb
所以如果你想 运行:
CXX="c++"; ID="c++"; cd ${ID}; ${CXX} main.cpp
CXX="/local/bin/nvcc"; ID="nvcc"; cd ${ID}; ${CXX} main.cpp
你会使用 :::+ :
parallel 'cd {2}; {1} main.cpp' ::: c++ /local/bin/nvcc :::+ c++ nvcc
此外:--dry-run
是您的朋友,因为它会向您展示 运行,这通常有助于理解效果。
如果您是 GNU Parallel 的新手并且喜欢看书,请在 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html or download it at: https://doi.org/10.5281/zenodo.1146014
购买 GNU Parallel 2018
至少阅读第 1+2 章。应该不会超过 20 分钟。
如何将不同的值传递给单个 parallel
命令:
我试过这个:
parallel ::: 'X="aa"' 'X="bb"' ::: echo ${X}
只打印两个空行,就好像 X
的值没有设置一样。
我用 echo $X
试过,结果相同。
我希望它能打印出来
aa
bb
好像我有 运行 顺序:
echo "aa"
echo "bb"
不完全清楚你想要什么运行。
你显然不想:
X="aa" echo ${X}
X="bb" echo ${X}
因为那没有输出。
你想要:
X="aa"; echo ${X}
X="bb"; echo ${X}
在这种情况下,您可以执行以下操作之一:
parallel ::: 'X="aa";' 'X="bb";' ::: 'echo ${X}'
parallel {1}\;{2} ::: 'X="aa"' 'X="bb"' ::: 'echo ${X}'
parallel '{}; echo ${X}' ::: 'X="aa"' 'X="bb"'
但是,GNU Parallel 的方法是使用 GNU Parallel 替换字符串而不是 $X:
parallel echo {} ::: aa bb
所以如果你想 运行:
CXX="c++"; ID="c++"; cd ${ID}; ${CXX} main.cpp
CXX="/local/bin/nvcc"; ID="nvcc"; cd ${ID}; ${CXX} main.cpp
你会使用 :::+ :
parallel 'cd {2}; {1} main.cpp' ::: c++ /local/bin/nvcc :::+ c++ nvcc
此外:--dry-run
是您的朋友,因为它会向您展示 运行,这通常有助于理解效果。
如果您是 GNU Parallel 的新手并且喜欢看书,请在 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html or download it at: https://doi.org/10.5281/zenodo.1146014
购买 GNU Parallel 2018至少阅读第 1+2 章。应该不会超过 20 分钟。