Como se o ponto de montagem -q $ 1 funciona?

1

Eu entendo que o ponto de montagem é usado para determinar se um determinado diretório é um ponto de montagem ou não. No entanto, o que eu não entendo é a combinação dele e da declaração if.

Eu testei um trecho de código da Internet:

#!/bin/bash

if mountpoint -q $1; then
  echo "$1 is mounted"
else
  echo "$1 isn't mounted"
fi

Funciona! Mas não tenho certeza de como funciona (especialmente -q significa ficar quieto). Eu tentei colocar a condição em um par de colchetes duplos:

if [[ mountpoint -q $1 ]]; then ...

E isso não funciona. Então, eu quero perguntar qual é o mecanismo interno que faz com que essa declaração funcione?

    
por Mamsds 24.04.2018 / 07:06

1 resposta

4

O comando mountpoint sairá com um status zero se o diretório ou arquivo for um ponto de montagem, diferente de zero, se não .

Isso é o que o comando if está verificando. Se o comando sai com sucesso (status zero) ou não (status diferente de zero). (Não tem nada a ver se existe alguma saída ou não.)

Para explicar a última parte ... A construção [[ ... ]] verificará se há uma string ou não, mas nesse caso você precisaria capturar a saída usando algo como [[ $(mountpoint $1) ]] , mas algo assim só funcionaria se o comando só imprimiria a saída nesse caso, algo assim seria mais realista [[ $(mountpoint $1 | grep 'is a mountpoint') ]] . Mas isso é inferior ... Apenas use -q e verifique o status de saída diretamente, é assim que isso deve ser usado!

    
por 24.04.2018 / 07:16