2017-03-14 7 views
1

マウントポイントのディレクトリをチェックする方法についてアドバイスがありますか?空であるか、スクリプトによって作成されているかどうか、シェルスクリプトのヘルプを探しています。それが存在しない場合はここでシェルマウントと方向性の有無を確認

#!/bin/bash 

MOUNTPOINT="/myfilesystem" 

if grep -qs "$MOUNTPOINT" /proc/mounts; then 
    echo "It's mounted." 
else 
    echo "It's not mounted." 

    mount "$MOUNTPOINT" 

    if [ $? -eq 0 ]; then 
     echo "Mount success!" 
    else 
     echo "Something went wrong with the mount..." 
    fi 
fi 

答えて

2

ご利用には中...例えば、文字列/myfilesystemを含むすべてのマウントポイントを返します。両方とも:

  • /myfilesystem
  • /home/james/myfilesystem

以下のような、より規範的なものを使用することを好む:

mountpoint -q "${MOUNTPOINT}" 

パスがディレクトリである場合は、テストする[を使用することができます。

if [ ! -d "${MOUNTPOINT}" ]; then 
    if [ -e "${MOUNTPOINT}" ]; then 
     echo "Mountpoint exists, but isn't a directory..." 
    else 
     echo "Mountpoint doesn't exist..." 
    fi 
fi 

mkdir -pは、必要に応じて、すべての親ディレクトリを作成します。ディレクトリはbashのの変数展開を利用することにより、空の場合

mkdir -p "${MOUNTPOINT}" 

は最後に、テストは:

[ "$(echo ${MOUNTPOINT}/*)" != "${MOUNTPOINT}/*" ] 

また良いことですあるレベルの '安全性'を備えたスクリプトを実行するアイデア。 https://linux.die.net/man/1/bash

-e  Exit immediately if a pipeline (which may consist of a single simple command), a 
     list, or a compound command (see SHELL GRAMMAR above), exits with a non-zero 
     status. 
-u  Treat unset variables and parameters other than the special parameters "@" and "*" 
     as an error when performing parameter expansion. 

いっぱいで:setビルトインコマンドを参照してください(注意bash -eu

#!/bin/bash -eu 

MOUNTPOINT="/myfilesystem" 

if [ ! -d "${MOUNTPOINT}" ]; then 
    if [ -e "${MOUNTPOINT}" ]; then 
     echo "Mountpoint exists, but isn't a directory..." 
     exit 1 
    fi 
    mkdir -p "${MOUNTPOINT}" 
fi 

if [ "$(echo ${MOUNTPOINT}/*)" != "${MOUNTPOINT}/*" ]; then 
    echo "Mountpoint is not empty!" 
    exit 1 
fi 

if mountpoint -q "${MOUNTPOINT}"; then 
    echo "Already mounted..." 
    exit 0 
fi 

mount "${MOUNTPOINT}" 
RET=$? 
if [ ${RET} -ne 0 ]; then 
    echo "Mount failed... ${RET}" 
    exit 1 
fi 

echo "Mounted successfully!" 
exit 0 
1

は、ディレクトリを確認することができますどのように存在し、それが空である:grep
if [ -d /myfilesystem ] && [ ! "$(ls -A /myfilesystem/)" ]; then echo "Directory exist and it is empty" else echo "Directory doesnt exist or not empty" fi

関連する問題