如何使用bash检查OS X中是否挂载了文件路径?

时间:2014-03-05 08:56:30

标签: macos bash

如果尚未安装,我该如何执行安装?

这是在OS X 10.9上,这是我目前所拥有的:

#!/bin/bash

# Local mount point
LOCALMOUNTPOINT="/folder/share"

# Perform the mount if it does not already exist
if ...
then
/sbin/mount -t smbfs //user:password@serveraddress/share $LOCALMOUNTPOINT

else
    echo "Already mounted"
fi

3 个答案:

答案 0 :(得分:19)

虽然@ hd1的答案会告诉您该文件是否存在,但并不一定意味着该目录已安装。如果您将此脚本用于不同的计算机或使用不同的挂载点,则该文件可能会存在。我会建议这个

LOCALMOUNTPOINT="/folder/share"

if mount | grep "on $LOCALMOUNTPOINT" > /dev/null; then
    echo "mounted"
else
    echo "not mounted"
fi

请注意,我在grep语句中包含“on”,基于我的机器中的mount命令输出。你说你使用MacOS所以它应该工作,但根据mount命令输出,你可能需要修改上面的代码。

答案 1 :(得分:4)

这是我在OS X 10.7.5上的shell脚本中使用的内容

df | awk '{print $6}' | grep -Ex "/Volumes/myvolume"

对于OS X 10.10优胜美地,我必须改为:

df | awk '{print $9}' | grep -Ex "/Volumes/myvolume"

答案 2 :(得分:0)

对我来说,stackoverflow_QA_Check if a directory exists in a shell script的这种解决方案

[ -d /Volumes/ ] && echo "Already mounted /Volumes/ in OS X" || echo "Not mounted"

使用它

# 2 lines
$LOCALMOUNTPOINT="/folder/share" ;
[ -d $LOCALMOUNTPOINT ] && echo "Already mounted $LOCALMOUNTPOINT in OS X" || /sbin/mount -t smbfs //user:password@serveraddress/share $LOCALMOUNTPOINT

这里是Stackoverflow_QA_how-can-i-mount-an-smb-share-from-the-command-line 关于smb的其他链接,我不太了解

# Here is my solution
$LOCALMOUNTPOINT="/folder/share" ;
[ ! -d $LOCALMOUNTPOINT ] && mkdir $LOCALMOUNTPOINT && /sbin/mount -t smbfs //user:password@serveraddress/share $LOCALMOUNTPOINT || echo already mounted $LOCALMOUNTPOINT

在安装该文件夹之前,我必须先创建一个新文件夹供我使用。

所以我添加了mkdir $LOCALMOUNTPOINT

谢谢你,我从这个案例中学到了很多。 祝你今天愉快!!! ;)