Como da um valor de entrada , e com esse valor seria a quantidade READ que daria ao usuario

1. Como da um valor de entrada , e com esse valor seria a quantidade READ que daria ao usuario

TheMagicOfOz
TheMagicOz

(usa PCLinuxOS)

Enviado em 05/07/2018 - 17:43h

Por exemplo tenho um script de criação de databases e tabelas, em uma das partes desse script eu pergunto ao usuario quantos campos ele deseja ter na sua tabela:
>>> Entre com a quantidade de campo que terá a sua tabela <<<
>>> Limite de 10 campos <<<
read QUANT_CAMPO
(De entrada vou colocar o valor de ex 3 campos que eu vou querer)
ai a partir desse momento ele vai chamar uma função que vai capturar os campos e os atributos de cada campo
se eu dei de entrada que minha tabela teria 3 campos , queria que ele rodasse 3 read e jogasse dentro de um só array , o array CAMPO_TABELA
como de ex:
>>> Entre com os seus respectivos campos <<
$ nome varchar(100)
$ idade integer
$ cidade varchar(100)

ele disponibiliza a quantidade de read de acordo com a quantidade de campo que você deu de entrada que teria a sua tabela


  


2. Re: Como da um valor de entrada , e com esse valor seria a quantidade READ que daria ao usuario

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 05/07/2018 - 19:13h

Velho ... usa o "read" para limitar o "while"

#!/bin/bash
echo "Qts. campos vc quer ???"
read qtde
cont=0

while [ $cont -le $qtde ]; do
comando ...
comando ...
((cont++))
done
exit


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



3. Não deu certo

TheMagicOfOz
TheMagicOz

(usa PCLinuxOS)

Enviado em 05/07/2018 - 19:19h

Mais aí, aí na parte do comando , eu coloco Read -a campo
(Obs: vou colocar só uma vez, aí o -a é pra salvar dentro de um array, mas aibseneu colocar que quero ter 3 campos, ele vai rodar o Read 3 vezes , mais Val salvar somente o último campo que você entrou, ai não salva os outros primeiros , nas primeiras voltas que deu)


4. Re: Como da um valor de entrada , e com esse valor seria a quantidade READ que daria ao usuario

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 05/07/2018 - 19:33h

Opa!
Veja se o script abaixo te atende.
Nele criei o array CAMPO, depois que o usuário digita a quantidade.
#!/bin/bash

echo "Quantidade de campos da tabela: "
read QTD

echo -e "\nEntre abaixo com os seus respectivos "$QTD" campos."
echo "Pressione <ENTER> no final de cada campo."
for((i=0;i<$QTD;i++))
do
read CAMPO_TMP
CAMPO[$i]=$CAMPO_TMP
done

# Exibindo os valores que estão no Array
echo -e "\nExibindo o Array"
x=0
while [ $x != ${#CAMPO[@]} ]
do
echo ${CAMPO[$x]}
let "x = x +1"
done

Abraço,
Diego M. Rodrigues


5. Muuuito obrigado

TheMagicOfOz
TheMagicOz

(usa PCLinuxOS)

Enviado em 05/07/2018 - 19:42h

Muuuito obrigadooo!


6. Re: Como da um valor de entrada , e com esse valor seria a quantidade READ que daria ao usuario

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/07/2018 - 22:40h

TheMagicOz escreveu:

Por exemplo tenho um script de criação de databases e tabelas, em uma das partes desse script eu pergunto ao usuario quantos campos ele deseja ter na sua tabela:
>>> Entre com a quantidade de campo que terá a sua tabela <<<
>>> Limite de 10 campos <<<
read QUANT_CAMPO
(De entrada vou colocar o valor de ex 3 campos que eu vou querer)
ai a partir desse momento ele vai chamar uma função que vai capturar os campos e os atributos de cada campo
se eu dei de entrada que minha tabela teria 3 campos , queria que ele rodasse 3 read e jogasse dentro de um só array , o array CAMPO_TABELA
como de ex:
>>> Entre com os seus respectivos campos <<
$ nome varchar(100)
$ idade integer
$ cidade varchar(100)

ele disponibiliza a quantidade de read de acordo com a quantidade de campo que você deu de entrada que teria a sua tabela

Segue mais uma alternativa:
#!/bin/bash
read -p "Entre com a quantidade de Campos: " CAMPOS
for ((i=0;i<CAMPOS;i++));do
read -p "Informe o Campo $((i+1)): " CAMPO_TABELA[$i]
done
printf "\n\nTotal de %s campos.\n" ${#CAMPO_TABELA[@]}
printf "%s\n" ${CAMPO_TABELA[@]}|nl|sed -r 's/^[ ]+/CAMPO_TABELA[/g;s/\t+/] - /g'

marcelo oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts