bash - 如何使用 GNU Parallel 解释 CSV 列中字符串值中的 Shell 变量?

标签 bash shell gnu-parallel

我正在尝试使用 GNU Parallel 根据 CSV 文件中的值执行命令。我的 CSV 文件有多列,每行第 5 列的值是一个类似于 '${OUTDIR}/test' 的字符串。

以下是我的 CSV 外观的示例:

col1,col2,col3,col4,'${OUTDIR}/test',col6

我想使用 GNU Parallel 对第 5 列的值运行 mkdir -p,将 ${OUTDIR} 解释为实际的 shell 变量。例如,如果 OUTDIR=/tmp,则该命令应作为 mkdir -p/tmp/test 运行。

我尝试了以下命令,但它没有解释 ${OUTDIR}:

parallel --colsep ',' 'mkdir -p {5}' :::: data.csv

制作:

mkdir -vp \'\$\{OUTDIR\}/test\'
mkdir: created directory ''\''${OUTDIR}'
mkdir: created directory ''\''${OUTDIR}/test'\'''

如何让 GNU Parallel 解释 CSV 中字符串值中的 ${OUTDIR}?我尝试过使用 eval mkdir -p {5} 但这并没有像我希望的那样处理引用。

最佳答案

使用 uq() 函数,如 Ole here 所示:

parallel --colsep ',' 'echo {=5 uq(); =}' :::: data.csv

关于bash - 如何使用 GNU Parallel 解释 CSV 列中字符串值中的 Shell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77201320/

相关文章:

linux - 为什么 bash 遇到 read 命令时以参数 -e (set -e) 停止?

python - 了解 python subprocess.check_output 的第一个参数和 shell=True

bash - 使用 shell 变量查找具有多个文件名的名称

bash - 如何将参数的一部分传递给 gnu 并行命令

parallel-processing - slurm Job Array 和 Job Step 性能的差异

bash - GNU 并行 : --line-buffer option doesn't work with --pipe

linux - 在 Bash 中处理 float

python - 如何从 Python subprocess.check_output() 捕获异常输出?

bash - bash局部变量赋值命令替换的退出代码

linux - 自定义 git 命令自动完成