如何将输出命令存储在变量中并在管道之后的下一个命令中再次使用该变量?
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