Erro no while [RESOLVIDO]

1. Erro no while [RESOLVIDO]

Jonas N
jnjnjn

(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 N
jnjnjn

(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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts