Criação de um Script para selecionar Discos e/ou Partições [RESOLVIDO]

1. Criação de um Script para selecionar Discos e/ou Partições [RESOLVIDO]

Bruno do Nascimento
eusouobn

(usa Arch Linux)

Enviado em 22/06/2022 - 14:50h

Saudações a todos

Estou tentando criar um Script para que o usuário possa selecionar um disco para ser formatado ou utilizado.... E este disco seja armazenado em uma variável....

Consegui chegar no seguinte:

#!/bin/bash

devices_list=($(lsblk -d | awk '{print "/dev/" $1}' | grep 'sd\|hd\|vd\|nvme\|mmcblk'))

printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Disco: '
select device in $devices_list; do
echo "$device"
done


A variável é criada porém o Script fica em um "Loop Infinito" pedindo para selecionar o disco novamente.... E eu gostaria que ele encerrasse após selecionar o disco

Alguém tem alguma dica?

Agradeço a todos


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/06/2022 - 18:40h


eusouobn escreveu:

Saudações a todos

Estou tentando criar um Script para que o usuário possa selecionar um disco para ser formatado ou utilizado.... E este disco seja armazenado em uma variável....

Consegui chegar no seguinte:

#!/bin/bash

devices_list=($(lsblk -d | awk '{print "/dev/" $1}' | grep 'sd\|hd\|vd\|nvme\|mmcblk'))

printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Disco: '
select device in $devices_list; do
echo "$device"
done


A variável é criada porém o Script fica em um "Loop Infinito" pedindo para selecionar o disco novamente.... E eu gostaria que ele encerrasse após selecionar o disco

Alguém tem alguma dica?

Agradeço a todos

Boa noite eusouobn,
devices_list é uma matriz,
da forma que esta fazendo, pega somente devices_list[0], como opção.
Segue sugestão:
#!/bin/bash
printf '\x1bc';
count=0;
mdevice=($(lsblk -d|awk '$1 ~ /sd/ || /hd/ || /vd/ || /nvme/ || /mmcblk/{printf "/dev/%s " ,$1}'))
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Disco: '
select device in ${mdevice[@]};do
(( $REPLY > ${#mdevice[@]})) && { let count++;printf "\e[1;38mErro Nº %02d\e[m => Escolha uma Opção válida.\n" $count;continue;} || { echo "$device";break;}
done

(( $REPLY > ${#mdevice[@]}) = Enquanto não selecionar uma opção Válida, continua.....

É isso, espero que seja útil....
______________________________________________________________________
Importante:
Se te ajudei, retribua....
É simples, só marcar como a "MELHOR RESPOSTA" :)

Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Criação de um Script para selecionar Discos e/ou Partições [RESOLVIDO]

Marco Capella
MarcoC

(usa Outra)

Enviado em 22/06/2022 - 15:01h


Ola.
A um tempo fiz um script para manusear, montar ,e formatar pendrivers em fat, ntfs e ext4 etc
Se te interessar instale esse script e de uma olhada no codigo ok?

Execute no terminal
sudo curl http://www.redelegal.com/aplicativos/rpi/usbmont-rl/curl-install-usbmont-rl.sh | bash

Foi feito para o sistema Raspbian do Raspberry Pi.

Espero que ajude.


4. Re: Criação de um Script para selecionar Discos e/ou Partições [RESOLVIDO]

Bruno do Nascimento
eusouobn

(usa Arch Linux)

Enviado em 22/06/2022 - 15:13h


MarcoC escreveu:


Ola.
A um tempo fiz um script para manusear, montar ,e formatar pendrivers em fat, ntfs e ext4 etc
Se te interessar instale esse script e de uma olhada no codigo ok?

Execute no terminal
sudo curl http://www.redelegal.com/aplicativos/rpi/usbmont-rl/curl-install-usbmont-rl.sh | bash

Foi feito para o sistema Raspbian do Raspberry Pi.

Espero que ajude.


Muito interessante mano...... Eu tbm estou desenvolvendo um Script utilizando whiptail e isso vai me ajudar bastante hehe
Obrigado


5. Resolvido

Bruno do Nascimento
eusouobn

(usa Arch Linux)

Enviado em 22/06/2022 - 16:43h

Bastou colocar um "break" depois do "echo", que faz com que o Script encerre, caso contrário ele fica em Loop.... Muito interessante hehe

Ficou assim:

#!/bin/bash

devices_list=($(lsblk -d | awk '{print "/dev/" $1}' | grep 'sd\|hd\|vd\|nvme\|mmcblk'))

printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Disco: '
select device in $devices_list; do
echo "$device";
break
done


Caso alguém tenha essa dúvida, agora tem a resposta e sugestão de como fazer....

Até a próxima!


6. Re: Criação de um Script para selecionar Discos e/ou Partições [RESOLVIDO]

Bruno do Nascimento
eusouobn

(usa Arch Linux)

Enviado em 23/06/2022 - 11:53h


msoliver escreveu:


eusouobn escreveu:

Saudações a todos

Estou tentando criar um Script para que o usuário possa selecionar um disco para ser formatado ou utilizado.... E este disco seja armazenado em uma variável....

Consegui chegar no seguinte:

#!/bin/bash

devices_list=($(lsblk -d | awk '{print "/dev/" $1}' | grep 'sd\|hd\|vd\|nvme\|mmcblk'))

printf '\x1bc';
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Disco: '
select device in $devices_list; do
echo "$device"
done


A variável é criada porém o Script fica em um "Loop Infinito" pedindo para selecionar o disco novamente.... E eu gostaria que ele encerrasse após selecionar o disco

Alguém tem alguma dica?

Agradeço a todos

Boa noite eusouobn,
devices_list é uma matriz,
da forma que esta fazendo, pega somente devices_list[0], como opção.
Segue sugestão:
#!/bin/bash
printf '\x1bc';
count=0;
mdevice=($(lsblk -d|awk '$1 ~ /sd/ || /hd/ || /vd/ || /nvme/ || /mmcblk/{printf "/dev/%s " ,$1}'))
PS3=$'\nSelecione uma opção: ';
echo -e 'Escolha um Disco: '
select device in ${mdevice[@]};do
(( $REPLY > ${#mdevice[@]})) && { let count++;printf "\e[1;38mErro Nº %02d\e[m => Escolha uma Opção válida.\n" $count;continue;} || { echo "$device";break;}
done

(( $REPLY > ${#mdevice[@]}) = Enquanto não selecionar uma opção Válida, continua.....

É isso, espero que seja útil....
______________________________________________________________________
Importante:
Se te ajudei, retribua....
É simples, só marcar como a "MELHOR RESPOSTA" :)

Att.: Marcelo Oliver
______________________________________________________________________


Muito interessante...... Eu estava usando como "referência" o Script AUI do HelmutHDU e tinha visto algo parecido, mas tentei aplicar e não deu certo, vou seguir sua sugestão, mto obrigado mano tmj






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts