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

waxmsbnn  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(94)

我正在尝试使用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运行。
我尝试了以下命令,但它没有解释${OUTPUT}:

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

制作:

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

如何让GNU Parallel解释CSV中的字符串值${OUTPUT}?我试过使用eval mkdir -p {5},但它不能像我希望的那样处理引用。

nbysray5

nbysray51#

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

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

相关问题