Solution 1 :
 Évitez d'utiliser /etc/mtab car il peut être incohérent.
 Éviter les tuyauteries mount parce que ça n'a pas besoin d'être si compliqué.
Simplement :
if grep -qs '/mnt/foo ' /proc/mounts; then
    echo "It's mounted."
else
    echo "It's not mounted."
fi
 
 (L'espace après le /mnt/foo est d'éviter de faire correspondre par ex. /mnt/foo-bar .)
Solution 2 :
if mountpoint -q /mnt/foo 
then
   echo "mounted"
else
   echo "not mounted"
fi
 ou
mountpoint -q /mnt/foo && echo "mounted" || echo "not mounted"
 Solution 3 :
 findmnt -rno SOURCE,TARGET "$1"  évite tous les problèmes dans les autres réponses. Il fait proprement le travail avec une seule commande.
Les autres approches présentent les inconvénients suivants :
grep -qetgrep -ssont une étape supplémentaire inutile et ne sont pas pris en charge partout./proc/\*n'est pas pris en charge partout. (mountpointest également basé sur proc).mountinfoest basé sur /proc/..cut -f3 -d' 'perturbe les espaces dans les noms de chemin- Analyse de montage L'espace blanc de est problématique. Sa page de manuel indique maintenant :
 
.. le mode de liste est maintenu uniquement pour la rétrocompatibilité.
Pour une sortie plus robuste et personnalisable, utilisez findmnt (8), notamment dans vos scripts.
Fonctions bash :
#These functions return exit codes: 0 = found, 1 = not found
isMounted    () { findmnt -rno SOURCE,TARGET "$1" >/dev/null;} #path or device
isDevMounted () { findmnt -rno SOURCE        "$1" >/dev/null;} #device only
isPathMounted() { findmnt -rno        TARGET "$1" >/dev/null;} #path   only
#where: -r = --raw, -n = --noheadings, -o = --output
 Exemples d'utilisation :
if isPathMounted "/mnt/foo bar";      #Spaces in path names are ok.
   then echo "path is mounted"
   else echo "path is not mounted"
fi
if isDevMounted "/dev/sdb4"; 
   then echo "device is mounted"
   else echo "device is not mounted"
fi
#Universal:
if isMounted "/mnt/foo bar"; 
   then echo "device is mounted"
   else echo "device is not mounted"
fi
if isMounted "/dev/sdb4";
   then echo "device is mounted"
   else echo "device is not mounted"
fi
 Solution 4 :
Un script comme celui-ci ne sera jamais portable. Un sale secret sous Unix est que seul le noyau sait où se trouvent les systèmes de fichiers, et à moins de choses comme /proc (non portable), il ne vous donnera jamais de réponse claire.
J'utilise généralement df pour découvrir quel est le point de montage d'un sous-répertoire et dans quel système de fichiers il se trouve.
Par exemple (nécessite un shell posix comme ash / AT&T ksh / bash / etc)
case $(df  $mount)
in
  $(df  /)) echo $mount is not mounted ;;
  *) echo $mount has a non-root filesystem mounted on it ;;
esac
 Kinda vous donne des informations utiles.
Solution 5 :
Voici ce que j'utilise dans l'un de mes travaux cron de sauvegarde rsync. il vérifie si /backup est monté et essaie de le monter si ce n'est pas le cas (cela peut échouer car le disque se trouve dans une baie remplaçable à chaud et peut même ne pas être présent dans le système)
REMARQUE :ce qui suit ne fonctionne que sur Linux, car il greps /proc/mounts - une version plus portable exécuterait 'mount | grep /backup', comme dans la réponse de Matthew..
  if ! grep -q /backup /proc/mounts ; then
    if ! mount /backup ; then
      echo "failed"
      exit 1
    fi
  fi
  echo "suceeded."
  # do stuff here