Erro no while [RESOLVIDO]

1. Erro no while [RESOLVIDO]

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 06/11/2018 - 08:52h

Está dando erro no while.
Já tentei outras alternativas e mesmo assim não esta dando certo.
# solicita tamanho do disco virtual.
$tamanho = 999999

while [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; do
read -p "Tamanho do disco: " tamanho
if [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; then
echo -e "Tamanho inválido! ($MIN_HD ~ $MAX_HD GB)"
fi
done

# Solicita tamanho da ram.
$memoria = 999999

while [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; do
read -p "Tamanho da maquina virtual ($MIN_RAM ~ $MAX_RAM B):" memoria
if [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; then
echo -e "Tamanho inválido! ($MIN_RAM ~ $MAX_RAM B)"
fi
done

# Solicitar quantidade de CPU
$CPU = 9999

while [ ![$CPU -gt $MIN_CUP -a $CPU -le $MAX_CUP] ]; do
read -p "Quantidade de Cpu ():" CPU
if [ ![$memoria -gt $MIN_CUP -a $memoria -le $MAX_CPU] ]; then
echo -e "Tamanho inválido! ($MIN_CUP ~ $MAX_CPU)"
fi
done



  


2. Re: Erro no while

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 06/11/2018 - 11:21h

jonasnl escreveu:

Está dando erro no while.
Já tentei outras alternativas e mesmo assim não esta dando certo.
# solicita tamanho do disco virtual.
$tamanho = 999999

while [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; do
read -p "Tamanho do disco: " tamanho
if [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; then
echo -e "Tamanho inválido! ($MIN_HD ~ $MAX_HD GB)"
fi
done

# Solicita tamanho da ram.
$memoria = 999999

while [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; do
read -p "Tamanho da maquina virtual ($MIN_RAM ~ $MAX_RAM B):" memoria
if [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; then
echo -e "Tamanho inválido! ($MIN_RAM ~ $MAX_RAM B)"
fi
done

# Solicitar quantidade de CPU
$CPU = 9999

while [ ![$CPU -gt $MIN_CUP -a $CPU -le $MAX_CUP] ]; do
read -p "Quantidade de Cpu ():" CPU
if [ ![$memoria -gt $MIN_CUP -a $memoria -le $MAX_CPU] ]; then
echo -e "Tamanho inválido! ($MIN_CUP ~ $MAX_CPU)"
fi
done


v se é isso que vc quer

#!/bin/bash
tamanho=750
MIN_HD=600
MAX_HD=950
while [ $tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD ]; do
read -p "Tamanho do disco: " tamanho
if [ $tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD ]; then
echo -e "Tamanho inválido! ($MIN_HD ~ $MAX_HD GB)"
fi
done


#!/bin/bash
tamanho=1750
MIN_HD=600
MAX_HD=950
while [ $tamanho -lt $MIN_HD -o $tamanho -ge $MAX_HD ]; do
read -p "Tamanho do disco: " tamanho
if [ $tamanho -lt $MIN_HD -o $tamanho -ge $MAX_HD ]; then
echo -e "Tamanho inválido! ($MIN_HD ~ $MAX_HD GB)"
fi
done


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

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

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



3. Re: Erro no while

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/11/2018 - 19:25h

jonasnl escreveu:

Está dando erro no while.
Já tentei outras alternativas e mesmo assim não esta dando certo.
# solicita tamanho do disco virtual.
$tamanho = 999999

while [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; do
read -p "Tamanho do disco: " tamanho
if [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; then
echo -e "Tamanho inválido! ($MIN_HD ~ $MAX_HD GB)"
fi
done

# Solicita tamanho da ram.
$memoria = 999999

while [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; do
read -p "Tamanho da maquina virtual ($MIN_RAM ~ $MAX_RAM B):" memoria
if [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; then
echo -e "Tamanho inválido! ($MIN_RAM ~ $MAX_RAM B)"
fi
done

# Solicitar quantidade de CPU
$CPU = 9999

while [ ![$CPU -gt $MIN_CUP -a $CPU -le $MAX_CUP] ]; do
read -p "Quantidade de Cpu ():" CPU
if [ ![$memoria -gt $MIN_CUP -a $memoria -le $MAX_CPU] ]; then
echo -e "Tamanho inválido! ($MIN_CUP ~ $MAX_CPU)"
fi
done


Boa noite Jonas.
Segue sugestão:
#!/bin/bash

MIN_HD=1
MAX_HD=50
MIN_RAM=1
MAX_RAM=3
MIN_CPU=1
MAX_CPU=2

clear
# tamanho do disco virtual.
while :;do
read -p " TAMANHO do Disco: " tamanho;
if (($tamanho>=$MIN_HD && $tamanho<=$MAX_HD));then
echo -e " DISCO OKAY ($MIN_HD ~ $MAX_HD GB)\n"
break
else
echo " Tamanho inválido"
continue
fi
done

# tamanho da ram.
while :;do
read -p " TAMANHO da Memória: " memoria;
if (($memoria>=$MIN_RAM && $memoria<=$MAX_RAM));then
echo -e " Memória OKAY ($MIN_RAM ~ $MAX_RAM B)\n"
break
else
echo " Memória inválida"
continue
fi
done

# quantidade de CPU
while :;do
read -p " Quantidade de Cpu (MIN 1|MAX 2): " CPU
if (($CPU>=$MIN_CPU && $CPU<=$MAX_CPU));then
echo -e " CPU OKAY ($MIN_CPU ~ $MAX_CPU)"
break
else
echo " CPU inválida"
continue
fi
done
echo -e "\n Os valores definidos são:\n DISCO:$tamanho\n MEMÓRIA:$memoria\n CPU:$CPU\n"

#################################################################################
Editado:
Tendo em vista que o script está muito repetitivo: 3 reads, 3 laços, 3 condicionais....
Dei uma otimizada, criando a função READ e chamando-a com os valores como parâmetros:
Segue:

#!/bin/bash

READ() {
while :;do
read -p " Informe o TAMANHO d(o|a) $3 ($1 ~ $2): "
if (($REPLY>=$1 && $REPLY<=$2));then
echo -e " $3 OKAY ($1 ~ $2 GB)\n"
eval $3=$REPLY; break
else
echo -e " Tamanho D(o|a) $3 inválido\n Minimo:$1\n Máximo:$2"; continue ;
fi
done
}

# TAMANHO do disco virtual.
READ 1 50 DISCO

# TAMANHO da ram.
READ 1 3 MEMORIA

# Quantidade de CPU
READ 1 2 CPU

echo -e "\n Os valores definidos são:\n DISCO:$DISCO\n MEMÓRIA:$MEMORIA\n CPU:$CPU\n"

Att.:
Marcelo Oliver


4. Re: Erro no while [RESOLVIDO]

Jonas do Nascimento Lemes
jonasnl

(usa Debian)

Enviado em 13/11/2018 - 08:05h

msoliver escreveu:

jonasnl escreveu:

Está dando erro no while.
Já tentei outras alternativas e mesmo assim não esta dando certo.
# solicita tamanho do disco virtual.
$tamanho = 999999

while [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; do
read -p "Tamanho do disco: " tamanho
if [ ![$tamanho -gt $MIN_HD -a $tamanho -le $MAX_HD] ]; then
echo -e "Tamanho inválido! ($MIN_HD ~ $MAX_HD GB)"
fi
done

# Solicita tamanho da ram.
$memoria = 999999

while [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; do
read -p "Tamanho da maquina virtual ($MIN_RAM ~ $MAX_RAM B):" memoria
if [ ![$memoria -gt $MIN_RAM -a $memoria -le $MAX_RAM] ]; then
echo -e "Tamanho inválido! ($MIN_RAM ~ $MAX_RAM B)"
fi
done

# Solicitar quantidade de CPU
$CPU = 9999

while [ ![$CPU -gt $MIN_CUP -a $CPU -le $MAX_CUP] ]; do
read -p "Quantidade de Cpu ():" CPU
if [ ![$memoria -gt $MIN_CUP -a $memoria -le $MAX_CPU] ]; then
echo -e "Tamanho inválido! ($MIN_CUP ~ $MAX_CPU)"
fi
done


Boa noite Jonas.
Segue sugestão:
#!/bin/bash

MIN_HD=1
MAX_HD=50
MIN_RAM=1
MAX_RAM=3
MIN_CPU=1
MAX_CPU=2

clear
# tamanho do disco virtual.
while :;do
read -p " TAMANHO do Disco: " tamanho;
if (($tamanho>=$MIN_HD && $tamanho<=$MAX_HD));then
echo -e " DISCO OKAY ($MIN_HD ~ $MAX_HD GB)\n"
break
else
echo " Tamanho inválido"
continue
fi
done

# tamanho da ram.
while :;do
read -p " TAMANHO da Memória: " memoria;
if (($memoria>=$MIN_RAM && $memoria<=$MAX_RAM));then
echo -e " Memória OKAY ($MIN_RAM ~ $MAX_RAM B)\n"
break
else
echo " Memória inválida"
continue
fi
done

# quantidade de CPU
while :;do
read -p " Quantidade de Cpu (MIN 1|MAX 2): " CPU
if (($CPU>=$MIN_CPU && $CPU<=$MAX_CPU));then
echo -e " CPU OKAY ($MIN_CPU ~ $MAX_CPU)"
break
else
echo " CPU inválida"
continue
fi
done
echo -e "\n Os valores definidos são:\n DISCO:$tamanho\n MEMÓRIA:$memoria\n CPU:$CPU\n"

#################################################################################
Editado:
Tendo em vista que o script está muito repetitivo: 3 reads, 3 laços, 3 condicionais....
Dei uma otimizada, criando a função READ e chamando-a com os valores como parâmetros:
Segue:

#!/bin/bash

READ() {
while :;do
read -p " Informe o TAMANHO d(o|a) $3 ($1 ~ $2): "
if (($REPLY>=$1 && $REPLY<=$2));then
echo -e " $3 OKAY ($1 ~ $2 GB)\n"
eval $3=$REPLY; break
else
echo -e " Tamanho D(o|a) $3 inválido\n Minimo:$1\n Máximo:$2"; continue ;
fi
done
}

# TAMANHO do disco virtual.
READ 1 50 DISCO

# TAMANHO da ram.
READ 1 3 MEMORIA

# Quantidade de CPU
READ 1 2 CPU

echo -e "\n Os valores definidos são:\n DISCO:$DISCO\n MEMÓRIA:$MEMORIA\n CPU:$CPU\n"

Att.:
Marcelo Oliver


Obrigado, pela ajuda.

Apenas um Aluno em busca de conhecimento






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts