Como armazenar o comando output na variável e usar esta varible novamente para o próximo comando após o pipe

0

Como armazenar o comando de saída em uma variável e usar essa variável novamente para o próximo comando após o pipe?

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

$input é o comando de saída lsblk | awk {'print $1'} | grep ^sd e usa $input novamente no comando parted .

    
por pyramid13 26.07.2018 / 12:26

2 respostas

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

Agora, se você quiser o primeiro disco sd? , talvez seja mais fácil de fazer:

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

Ou para fazer isso em todos os discos:

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

Basta salvar em uma variável e processá-la.

input='lsblk | awk {'print $1'} | grep ^sd' ; parted $input mklable gpt mkpart primary "1 -1" -s
    
por 26.07.2018 / 12:50