出力コマンドを変数に保存し、パイプの背後にある次のコマンドでその変数をどのように再利用できますか?
lsblk | awk {'print $1'} | grep ^sd | parted $input mklable gpt mkpart primary "1 -1" -s
$input
コマンドを出力してコマンドで再利用することですlsblk | awk {'print $1'} | grep ^sd
。$input
parted
答え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