出力コマンドを変数に保存し、パイプの後に次のコマンドでその変数を再利用する方法

出力コマンドを変数に保存し、パイプの後に次のコマンドでその変数を再利用する方法

出力コマンドを変数に保存し、パイプの背後にある次のコマンドでその変数をどのように再利用できますか?

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

関連情報