如何将列表传递给并行

时间:2015-04-02 15:56:18

标签: parallel-processing gnu-parallel

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

#!/bin/bash

declare -a ephemeral_list
for mount in $(lsblk | grep ^x | awk '{ print $1 }')
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上

任何帮助?

感谢

1 个答案:

答案 0 :(得分:1)

制作一个功能。打电话给。

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

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