<Anterior | Conteúdo | Próxima>
enquanto
O bash pode expressar uma ideia semelhante. Digamos que quiséssemos exibir cinco números em sequência
ordem inicial de um a cinco. uma bater o script pode ser construído da seguinte forma:
#! / Bin / bash
# while-count: exibe uma série de números count = 1
enquanto [[$ count -le 5]]; faça echo $ count count = $ ((count + 1))
feito
echo "Concluído".
#! / Bin / bash
# while-count: exibe uma série de números count = 1
enquanto [[$ count -le 5]]; faça echo $ count count = $ ((count + 1))
feito
echo "Concluído".
Quando executado, este script exibe o seguinte:
[me @ linuxbox ~] $ enquanto conta
1
2
3
4
5
Acabado.
[me @ linuxbox ~] $ enquanto conta
1
2
3
4
5
Acabado.
A sintaxe do enquanto o comando é:
enquanto comandos; Faz comandos; feito
Como if, enquanto avalia o status de saída de uma lista de comandos. Desde que o status de saída seja zero, ele executa os comandos dentro do loop. No script acima, a variável contar é criado e atribuído a um valor inicial de 1. O enquanto comando avalia o status de saída do [[]] comando composto. Contanto que o [[]] comando retorna um status de saída de zero, os comandos dentro do loop são executados. No final de cada ciclo, o [[]] comando é repetido. Após cinco iterações do loop, o valor de contar aumentou para 6, o [[]] o comando não retorna mais um status de saída de zero e o loop termina. O programa continua com a próxima instrução após o loop.
Podemos usar um loop while para melhorar o menu de leitura programa do capítulo anterior:
#! / Bin / bash
# while-menu: um programa de informações do sistema acionado por menu
#! / Bin / bash
# while-menu: um programa de informações do sistema acionado por menu
ATRASO = 3 # Número de segundos para exibir os resultados
enquanto [[$ REPLY! = 0]]; Faz
remover filtragem
gato << - _EOF_
Por favor selecione:
1. Exibir informações do sistema
2. Exibir espaço em disco
3. Exibir a utilização do espaço doméstico
0. Saia
_EOF_
leia -p "Digite a seleção [0-3]>"
if [[$ REPLY = ~ ^ [0-3] $]]; então se [[$ REPLY == 1]]; então
echo "Hostname: $ HOSTNAME" uptime
dormir $ DELAY
fi
if [[$ REPLY == 2]]; então df -h
dormir $ DELAY
fi
if [[$ REPLY == 3]]; então
if [[$ (id -u) -eq 0]]; então
echo "Utilização do espaço doméstico (todos os usuários)" du -sh / home / *
outro
echo "Utilização do espaço doméstico ($ USER)" du -sh $ HOME
fi
dormir $ DELAY
fi
outro
echo "Entrada inválida."
dormir $ DELAY
fi
feito
echo "Programa encerrado."
ATRASO = 3 # Número de segundos para exibir os resultados
enquanto [[$ REPLY! = 0]]; Faz
remover filtragem
gato << - _EOF_
Por favor selecione:
1. Exibir informações do sistema
2. Exibir espaço em disco
3. Exibir a utilização do espaço doméstico
0. Saia
_EOF_
leia -p "Digite a seleção [0-3]>"
if [[$ REPLY = ~ ^ [0-3] $]]; então se [[$ REPLY == 1]]; então
echo "Hostname: $ HOSTNAME" uptime
dormir $ DELAY
fi
if [[$ REPLY == 2]]; então df -h
dormir $ DELAY
fi
if [[$ REPLY == 3]]; então
if [[$ (id -u) -eq 0]]; então
echo "Utilização do espaço doméstico (todos os usuários)" du -sh / home / *
outro
echo "Utilização do espaço doméstico ($ USER)" du -sh $ HOME
fi
dormir $ DELAY
fi
outro
echo "Entrada inválida."
dormir $ DELAY
fi
feito
echo "Programa encerrado."
Ao encerrar o menu em um loop while, podemos fazer com que o programa repita a exibição do menu após cada seleção. O loop continua enquanto RESPOSTA não é igual a “0” e o menu é exibido novamente, dando ao usuário a oportunidade de fazer outra seleção. Ao final de cada ação, um dormir O comando é executado de forma que o programa pare por alguns segundos para permitir que os resultados da seleção sejam vistos antes que a tela seja apagada e o menu seja exibido novamente. Uma vez RESPOSTA é igual a "0", indicando a seleção de "sair",
o loop termina e a execução continua com a linha seguinte feito.