如何将列表传递给并行
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[@]}"
我正在尝试在以下脚本中使用并行
#!/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[@]}"