O que significa “se [-e $ name]”? Onde $ name é um caminho para um diretório

3

No if [ -e $name ] , que verificação de condição é -e ?
$name é uma variável de um caminho para um diretório.

    
por user277585 04.05.2014 / 01:37

1 resposta

6

-e retornará verdadeiro se o destino existir. Não importa se é um arquivo, pipe, dispositivo especial, o que for. A única condição em que algo pode existir e -e retornará false é no caso de um link simbólico quebrado.

Por exemplo:

$ ln -s foo bar

$ [ -e foo ]; echo $?
1

$ touch bar

$ [ -e foo ]; echo $?
0

No bash, você pode fazer help test para ver quais opções de teste você tem.

[ geralmente faz parte do seu shell. No bash as opções e comportamentos são definidos pelo bash. Também é uma espécie de sinônimo para test . No bash você pode fazer help test para ver todas as opções que ele suporta.
A única diferença real entre [ e test deve ser que [ requer um ] após seus argumentos, enquanto test não. Caso contrário, eles funcionam da mesma forma, [ -e foo ] é equivalente a test -e foo .

Há também /usr/bin/[ para shells que não possuem [ embutido. Não existe uma página man para isso. Mas há também um /usr/bin/test e meu sistema tem um man test que abrange as opções. Eu não testei, mas aposto que todas as opções suportadas por /usr/bin/test funcionam em /usr/bin/[ .

    
por 04.05.2014 / 01:49