Como verificar se um arquivo ou diretório existe em um script Bash Shell

Verificar se um arquivo ou diretório existe a partir de um script Bash

O Bash é usado para automatizar comandos executados regularmente no Linux. Os comandos destinados a operações em arquivos / diretórios são usados ​​com bastante frequência e, normalmente, antes de executarmos tal comando, precisamos verificar se o arquivo ou diretório específico existe. Vamos ver como fazer essa verificação.

Sintaxe e uso

arquivos

Para verificar se existe um arquivo, use a seguinte sintaxe:

[-f]

A expressão [-f] retorna 0, ou seja, sucesso se existe e, se não existir, retorna um status diferente de zero. Normalmente, isso é usado como uma condição no E se declaração.

if [-f] então fi

Para negar o valor retornado, simplesmente preceda o -f com um operador de negação (!).

E se [ ! -f] então fi

Neste caso, a condição será satisfeita se o arquivo não existe, já que o status diferente de zero retornado (falso) será negado e considerado como 0 (verdadeiro).

Observe que se o arquivo a ser verificado não existe no diretório atual e existe em algum outro diretório, o caminho completo do arquivo deve ser mencionado em vez de apenas o nome do arquivo.

Diretórios

Sintaxe semelhante à usada para verificar arquivos é usada para verificar diretórios.

[-d]

Semelhante à instrução para arquivos, esta instrução retorna 0, ou seja, sucesso, se o diretório existe e um diferente de zero, ou seja, o status de falha é retornado se não existir. Isso também é comumente usado em um E se condição de declaração.

se [-d] então fi

Para negar o status retornado, preceda o -d com um operador de negação (!).

E se [ ! -d] então fi

A condição será satisfeita (status 0) neste caso se o diretório não existir e falhará (status diferente de zero) se o diretório existir.

Conforme mencionado antes para os arquivos, se o diretório a ser verificado existe em outro local e não no diretório atual, todo o caminho do diretório precisa ser inserido em vez de apenas o nome do diretório.

💡 A sintaxe dos colchetes ( [...] ) usado aqui é na verdade um comando Linux chamado teste. As opções -f e -d são os recursos deste comando. Para obter mais informações, consulte a página de manual do teste ( teste de homem ).

Verificar a partir de um script Bash

Nos exemplos acima, usamos as sintaxes diretamente no terminal. O shell sempre que encontra um loop ou uma instrução condicional (E se no nosso caso), ele continua o prompt e permite que o usuário entre para continuar o bloco.

As mesmas sintaxes podem ser usadas dentro de um script Bash.

O #! / bin / bash no início especifica o interpretador a ser usado quando o arquivo é executado. Embora o Bash seja o shell mais comumente usado hoje em dia, alguns usuários preferem shells como zsh, que deve ser especificado no lugar de bash no início deste arquivo.

Para dar permissões de execução para este arquivo, execute:

chmod + x test.sh

Finalmente, para executar o arquivo, corre:

./test.sh