Qual é a diferença entre filename = $ {1: - / etc / hosts} e filename = / etc / hosts? [duplicado]

2
    

Esta pergunta já tem uma resposta aqui:

    

Qual é a diferença entre filename=${1:-/etc/hosts} e filename=/etc/hosts ?

Por exemplo:

filename=/etc/hosts

if [ -r "$filename" ] && [ -s "$filename" ]; then
    md5sum $filename
else
    echo "$filename cannot be processed"
fi

e

filename=${1:-/etc/hosts}

if [ -r "$filename" ] && [ -s "$filename" ]; then
    md5sum $filename
else
    echo "$filename cannot be processed"
fi
    
por jeronimo 29.06.2014 / 13:52

1 resposta

10

filename=${1:-/etc/hosts} atribui o valor /etc/hosts à variável filename se $1 não estiver definido ou nulo.

De manual do bash do GNU :

${parameter:-word}

If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.

    
por 29.06.2014 / 13:57