如何将列表传递给并行

how to pass list to parallel

我正在尝试在以下脚本中使用并行

#!/bin/bash

declare -a ephemeral_list
for mount in $(lsblk | grep ^x | awk '{ print  }')
do
   if ! mount | grep $mount >/dev/null; then
      ephemeral_list+=($mount)
   fi
done

for i in "${!ephemeral_list[@]}"
do
  printf "%s\t%s\n" "$i" "${ephemeral_list[$i]}"
  [ -d /mnt/ephemeral$i ] || mkdir /mnt/ephemeral$i
  mkfs.ext4 -E nodiscard /dev/${ephemeral_list[$i]} &&  mount /dev/${ephemeral_list[$i]} /mnt/ephemeral$i &
done 

我想 运行 "mkfs.ext4 -E nodiscard /dev/${ephemeral_list[$i]} && mount /dev/${ephemeral_list[$i]} /mnt/ephemeral$i &" 在每个 cpu 上执行命令

有帮助吗?

谢谢

做一个函数。叫那个。

mymkfs() {
  printf "%s\t%s\n" "" ""
  [ -d /mnt/ephemeral ] || mkdir /mnt/ephemeral
  mkfs.ext4 -E nodiscard /dev/"" &&  mount /dev/"" /mnt/ephemeral
}
export -f mymkfs

parallel mymkfs {#} {} ::: "${ephemeral_list[@]}"