GNU parallel-如何处理没有空格或换行的列分隔符?

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

我知道以下情况。

doit() {
  echo Doing it for $1
  sleep 2
  echo Done with $1
}

export -f doit
parallel --colsep ',' -0 doit ::: 1, 2, 3

期望输出1:

做1完成1做2完成2做3完成3

但是,就我而言,参数之间没有空格' '。这是我的代码。

doit() {
  echo Doing it for $1
  sleep 2
  echo Done with $1
}

export -f doit
parallel --colsep ',' -0 doit ::: 1,2,3

并且我得到以下输出。

输出2:

做1完成1

如何通过第二个代码块获得第一个所需的输出?

bash gnu-parallel
2个回答
0
投票

这是必需的:

#!/usr/bin/env bash

doit() {
  echo Doing it for $1
  sleep 2
  echo Done with $1
}

export -f doit
parallel doit ::: $(IFS=,; read -ra A <<< 1,2,3; echo "${A[@]}")

[当您使用--colsep时,parallel分隔单个参数并馈送到doit


0
投票

使用-d而不是--colsep

#!/usr/bin/env bash

doit() {
  local c
  for c; do
    echo Doing it for $c
    sleep 2
    echo Done with $c
  done
}

export -f doit
parallel -d ',' doit ::: 1,2,3

© www.soinside.com 2019 - 2024. All rights reserved.