Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Uma versão mais moderna do teste

Versões recentes de bater incluem um comando composto que atua como uma substituição aprimorada para teste. Ele usa a seguinte sintaxe:

[[ expressão ]]

onde, como teste, expressão é uma expressão avaliada como um resultado verdadeiro ou falso. o [[]] comando é muito semelhante a teste (suporta todas as suas expressões), mas


adiciona uma nova expressão de string importante:

string1 =~ regex

que retorna verdadeiro se string1 é correspondido pela expressão regular estendida regex. Isso abre muitas possibilidades para executar tarefas como validação de dados. Em nosso exemplo anterior de expressões inteiras, o script falharia se a constante INT continha qualquer coisa, exceto um inteiro. O script precisa de uma maneira de verificar se a constante contém um número inteiro. Usando [[]] com o =~ operador string expression, poderíamos melhorar o script desta forma:



#! / Bin / bash


# test-integer2: avalia o valor de um inteiro.


INT = -5


if [["$ INT" = ~ ^ -? [0-9] + $]]; então

se [$ INT -eq 0]; então echo "INT é zero."

outro

se [$ INT -lt 0]; então echo "INT é negativo."

outro

echo "INT é positivo."

fi

if [$ ((INT% 2)) -eq 0]; então echo "INT é par."

outro

echo "INT é estranho."

fi

fi

outro

echo "INT não é um número inteiro." > & 2 saída 1

fi

#! / Bin / bash


# test-integer2: avalia o valor de um inteiro.


INT = -5


if [["$ INT" = ~ ^ -? [0-9] + $]]; então

se [$ INT -eq 0]; então echo "INT é zero."

outro

se [$ INT -lt 0]; então echo "INT é negativo."

outro

echo "INT é positivo."

fi

if [$ ((INT% 2)) -eq 0]; então echo "INT é par."

outro

echo "INT é estranho."

fi

fi

outro

echo "INT não é um número inteiro." > & 2 saída 1

fi


Ao aplicar a expressão regular, podemos limitar o valor de INT para apenas strings que começam com um sinal de menos opcional, seguido por um ou mais numerais. Essa expressão também elimina a possibilidade de valores vazios.

Outro recurso adicionado de [[]] é que a == O operador oferece suporte à correspondência de padrões da mesma forma que a expansão do nome do caminho. Por exemplo:



[me @ linuxbox ~] $ FILE = foo.bar

[me @ linuxbox ~] $ FILE = foo.bar

Uma versão mais moderna do teste


[me @ linuxbox ~] $ if [[$ FILE == foo. *]]; então

> echo "$ FILE corresponde ao padrão 'foo. *'"

> fi

foo.bar corresponde ao padrão 'foo. *'

[me @ linuxbox ~] $ if [[$ FILE == foo. *]]; então

> echo "$ FILE corresponde ao padrão 'foo. *'"

> fi

foo.bar corresponde ao padrão 'foo. *'


Isto torna [[]] útil para avaliar nomes de arquivos e caminhos.


Top OS Cloud Computing na OnWorks: