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

问题描述 投票:0回答:1

我正在尝试使用 GNU Parallel 根据 CSV 文件中的值执行命令。我的 CSV 文件有多列,每行第 5 列的值是一个看起来像

'${OUTDIR}/test'
的字符串。

这是我的 CSV 外观的示例:

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

我想使用 GNU Parallel 对第五列的值运行 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}
但这并不能像我希望的那样处理引用。

bash shell gnu-parallel
1个回答
0
投票

使用

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

parallel --colsep ',' 'echo {=5 uq(); =}' :::: data.csv
© www.soinside.com 2019 - 2024. All rights reserved.