Bash
如何檢查文件系統是否使用腳本掛載
我是腳本新手……我可以做非常基本的事情,但現在我需要幫助。
我有一個本地文件系統,只有在需要備份時才會掛載。
我從這個開始。
#!/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
我不知道如何檢查。有什麼指導嗎?
mount
您可以使用 shell 特殊參數檢查 的狀態程式碼和大多數編寫良好的執行檔?
。來自
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
有關“退出和退出狀態”的更多資訊,您可以參考Advanced Bash-Scripting Guide。
許多 Linux 發行版都有該
mountpoint
命令。它可以顯式用於檢查目錄是否是掛載點。就這麼簡單:#!/bin/bash if mountpoint -q "$1"; then echo "$1 is a mountpoint" else echo "$1 is not a mountpoint" fi