私はスクリプトが初めてです...非常に基本的なタスクを実行できますが、今は助けが必要です。
バックアップが必要な場合にのみマウントするローカルファイルシステムがあります。
これから始めましょう。
#!/bin/bash
export MOUNT=/myfilesystem
if grep -qs $MOUNT /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."; then
mount $MOUNT;
fi
私が言ったように、私はスクリプトにとって非常に基本的です。mount
戻りコードを見ると、コマンドの状態を確認できると聞きました。
RETURN CODES
mount has the following return codes (the bits can be ORed):
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
どうやって確認するのかわかりません。どのような指示がありますか?
答え1
このコマンドは多くのLinuxディストリビューションで利用可能ですmountpoint
。ディレクトリがマウントポイントかどうかを確認するために明示的に使用できます。次のように簡単です。
#!/bin/bash
if mountpoint -q "$1"; then
echo "$1 is a mountpoint"
else
echo "$1 is not a mountpoint"
fi
答え2
mount
シェル特殊パラメータを使用して、よく作成された実行可能ファイルのステータスコードを確認できます?
。
からman bash
:
? Expands to the exit status of the most recently executed foreground pipeline.
コマンドを実行したmount
直後に実行すると、前のecho $?
コマンドのステータスコードが印刷されます。
# mount /dev/dvd1 /mnt
mount: no medium found on /dev/sr0
# echo $?
32
すべての実行可能ファイルに明確に定義されたステータスコードがあるわけではありません。少なくとも成功(0)または失敗(1)コードで終了する必要がありますが、必ずしもそうではありません。
サンプルスクリプトを拡張して修正するために、明確にするif
ためにネストした構造を追加しました。ステータスコードをテストしてタスクを実行する唯一の方法ではありませんが、学習時に読みやすくなります。
パスの一部が一致しないように、インストールパスの周りのスペースをメモしてください。
#!/bin/bash
mount="/myfilesystem"
if grep -qs " $mount " /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."
mount "$mount"
if [ $? -eq 0 ]; then
echo "Mount success!"
else
echo "Something went wrong with the mount..."
fi
fi
「終了と終了のステータス」の詳細については、次をご覧ください。高度なバッシュスクリプトガイド。
答え3
別の方法:
if findmnt ${mount_point}) >/dev/null 2>&1 ; then
#Do something for positive result (exit 0)
else
#Do something for negative result (exit 1)
fi
答え4
短い氏名
確認するインストールされている場合:
mount|grep -q "/mnt/data" && echo "/mnt/data is mounted; I can follow my job!"
確認するインストールされていない場合:
mount|grep -q "/mnt/data" || echo "/mnt/data is not mounted I could probably mount it!"