o que -x significa em declaração condicional if?


Respostas:


26

Nas man bashpáginas (especialmente na seção EXPRESSÕES CONDICIONAIS):

   -a file
          True if file exists.
   -b file
          True if file exists and is a block special file.
   -c file
          True if file exists and is a character special file.
   -d file
          True if file exists and is a directory.
   -e file
          True if file exists.
   -f file
          True if file exists and is a regular file.
   -g file
          True if file exists and is set-group-id.
   -h file
          True if file exists and is a symbolic link.
   -k file
          True if file exists and its ``sticky'' bit is set.
   -p file
          True if file exists and is a named pipe (FIFO).
   -r file
          True if file exists and is readable.
   -s file
          True if file exists and has a size greater than zero.
   -t fd  True if file descriptor fd is open and refers to a terminal.
   -u file
          True if file exists and its set-user-id bit is set.
   -w file
          True if file exists and is writable.
   -x file
          True if file exists and is executable.

   [...]

3
Note-se, executável para um diretório significa que ele pode ser percorrido.
rica Remer

2
@StevenPenny A segunda parte da pergunta foi "Como eu poderia descobrir esta página de manual se?"
Sparhawk

11
@drewbenn Quando você invoca testno bash, não está invocando o testbinário. Em vez disso, você está invocando o testbuilt-in do bash , que possui documentação em help test, entre outros lugares. man testpode ser enganoso em alguns casos por esse motivo.
Chris Baixo

11

ifprópria é uma palavra-chave shell, para que você possa encontrar informações sobre ela help if. ifele próprio ramifica apenas se o próximo comando retorna verdadeiro (0) ou falso (não zero). O que você realmente quer, porém, é man [ou man test, para onde [serve um alias test. Essa instrução está realmente em execução test -x /etc/rc.local, que testa para verificar se esse arquivo existe e é executável (ou tem permissão de pesquisa).


11
man [funciona também
Sparhawk #

11
Ele não apenas testa para ver se existe, mas também se o arquivo é executável.
21414 Tom Tomech

@TomFenech, ahh, certo ...
psusi

O @psusi ifnão é um shell embutido, é uma palavra-chave shell. Execute este comando type ifpara verificar isso.
Avinash Raj

3

De info test:

`-x FILE'
    True if FILE exists and execute permission is granted (or search permission, if it is a directory).

A permissão de execução é necessária em um diretório para poder entrar nele (ou seja, para tornar um diretório seu diretório de trabalho atual).

A execução é necessária em um diretório para acessar as informações de "inode" dos arquivos contidos. Você precisa disso para procurar um diretório para ler os inodes dos arquivos. Por esse motivo, a permissão de execução em um diretório geralmente é chamada de permissão de pesquisa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.