Comando para repetição de código (while / until / for)
Dando sequência a algumas postagens efetuadas a algum tempo, vamos falar sobre “loops” ou repetição de código na programação em shell script Unix/Linux.
Nas postagens anteriores, demos uma introdução ao shell script, falamos da criação de funções em shell e falamos de desvio condicional e com isso esta postagem encerra a sequencia da estrutura de controle de fluxo em shell script.
Comando while
O comando “while” com em outras linguagens de software executa um bloco de código enquanto sua condição for verdadeira.
Ex:
1 2 3 | while <condição>;do bloco de código/ comando... done |
Vejamos um exemplo prático.
1 2 3 4 5 | #!/bin/bash while true;do echo "O velho e bom, Hello World!!!" done |
1 2 3 4 5 6 7 8 | #!/bin/bash name="Nação Livre" while [ "$name" = "Nação Livre" ];do echo "Mundo open source !!!" echo "Eu adoro programar !!!" done |
1 2 3 4 5 6 7 | #!/bin/bash while ( $# != 0 ); do if [ "$1" = "create-file" ];then touch "criando-um-arquivo.txt" fi done |
Comando until
O comando “until” ao contrário do comando while, executa um bloco de código enquanto sua expressão condicional for falsa.
1 2 3 | until <condição>;do bloco de código/ comando... done |
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash response=yes until ["$response" = "no"];do echo "Entre com um endereço de e-mail: " read email echo "$email" >> list-mail.txt echo "Deseja inserir mais e-mails a lista? [yes|no]" read response done |
Comando for
O comando “for” executa um laço de repetição em uma lista enquanto ouver itens para a iteração.
1 2 3 | for<iteração> in <lista>;do bloco de código/ comando... done |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/bin/bash # # Lista os Bancos disponiveis # mysql_user="root" mysql_password="minha-senha" sql_database=$(mysql -u$mysql_user -hlocalhost -p$mysql_password -Bse 'SHOW DATABASES WHERE `database` != "information_schema" AND `database` != "mysql"') for db in ${sql_database}; do mysqldump --databases $db -hlocalhost -u$mysql_user -p$mysql_password --hex-blob > /backup/database/sql-$db.sql done |
1 – Criando Programas Shell Script/Introdução.
2 – Criando Funções no Shell Script.
3 – Desvio Condicional em Shell Script.
4 – Comando para repetição de código (while / until / for).
5 – Comandos Úteis para Para Shell script.
6 – Sinais ou Traps do sistema.
7 – Exemplos Úteis.
O 3º exemplo que vcs deram sobre While não da certo.
exemplo correto de while..
#!/bin/bash
while [ $# = 1 ]; do
if [ "$1" = "file" ];then
touch “criando-um-arquivo.txt”
fi
done
Olá Gabriel,
Bom, se escreveu o código exatamente como está aqui no comentário, com certeza não irá funcionar! “if [ $# = 1 ]; then” entre o ponto e virgula e a palavra reservada then existe um espaço.