Para definir uma variável para o primeiro argumento de linha de comando, você faria
pathname=$1
Para configurá-lo para um valor padrão, caso o argumento não esteja disponível ou esteja vazio, use
pathname=${1:-/var/log/secure}
O formulário geral é ${parameter:-word}
. Esta é uma expansão do parâmetro POSIX padrão , e também está documentada no manual do seu concha.
O teste -d
testa se a string especificada corresponde a um caminho de diretório existente (ou se é um link simbólico para um existente). O teste -f
é para arquivos regulares da mesma forma, e -e
cobre qualquer coisa (será verdadeiro se o nome existir, independentemente do nome do nome).
Para negar o sentido de um teste, você usaria !
para obter
if [ ! -f "$pathname" ]; then
myfunction
fi
ou, usando a sintaxe de curto-circuito,
[ ! -f "$pathname" ] && myfunction
Isso chamaria myfunction
se a string na variável pathname
não designasse um arquivo regular existente (ou um link para um).
Um script completo que usa um argumento de linha de comando (um caminho) com um valor padrão e sai com o status de saída 2 se o caminho fornecido não corresponder a um arquivo regular existente.
#!/bin/bash
pathname=${1:-/var/log/secure}
if [ ! -f "$pathname" ]; then
printf 'There is no file called "%s"\n' "$pathname"
exit 2
fi
printf 'The file "%s" exists\n' "$pathname"