如何将输出命令存储在变量中并在管道后的下一个命令中再次使用该变量

如何将输出命令存储在变量中并在管道后的下一个命令中再次使用该变量

如何将输出命令存储在变量中并在管道之后的下一个命令中再次使用该变量?

lsblk | awk {'print $1'} | grep ^sd | parted $input mklable gpt mkpart primary "1 -1" -s

$input是输出命令并在命令 中再次lsblk | awk {'print $1'} | grep ^sd使用。$inputparted

答案1

dev=$(lsblk | awk '$1 ~ /^sd/ {print $1; exit}')
if [ -n "$dev" ]; then
  dev=/dev/$dev
  parted "$dev" mklabel gpt mkpart primary "1 -1" -s
fi

现在,如果您想要第一个sd?磁盘,可能更容易做到:

shopt -s nullglob; set -- /dev/sd[a-z]
if (($# > 0 )); then
  parted "$1" mklabel gpt mkpart primary "1 -1" -s
fi

或者对每个磁盘执行此操作:

shopt -s nullglob
for dev in /dev/sd[a-z]; do
  (set -x; parted "$dev" mklabel gpt mkpart primary "1 -1" -s)
done

答案2

只需保存到变量并对其进行处理即可。

input=$(lsblk | awk {'print $1'} | grep ^sd); \
parted $input mklabel gpt mkpart primary "1 -1" -s

相关内容