我正在尝试使用 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/