【问题标题】:Require Help Writing Bash Script to Compare Mounted Network Mounts MAC OSX需要帮助编写 Bash 脚本以比较已挂载的网络挂载 MAC OSX
【发布时间】:2015-04-09 06:50:58
【问题描述】:

我正在尝试编写一个 bash 脚本,该脚本将根据挂载的网络共享来确定结果,

我有 3 种可能的网络挂载,根据挂载的内容需要 3 种不同的结果。

我没有编写 bash 的经验,但是一旦我设置了 IF 语句,我就可以填写其余部分,我只是找不到任何地方可以帮助我比较已安装的安装件

这就是我要找的东西

    IF [Network Mount 1 is mounted] then 

    Copy File 1

    Else IF [Network Mount 2 is mounted] then

    Copy File 2

    Else [Network Mount 3 is mounted] Then

    Copy File 3

我卡住了!

请帮助或指导我。

更新: 所以我认为我一直在比较错误的信息来实现我的目标,

由于我希望将此脚本作为登录挂钩运行,我认为比较用户 SMB 主目录而不是挂载更好,因为它不会在脚本运行时挂载。

我可以通过这行代码获取网络主目录

dscl . read /Users/$USER SMBHome

我现在想将此与 3 个可能的 SMB 文件服务器进行比较

FS02/学生文件夹$ FS03/员工文件夹$ FS03/TeachersFolders$

在通配符比较中,因为 SMB 路径也将包含用户名,所以这就是我目前所拥有的

#!/bin/bash

UsersHome = dscl . read /Users/$USER SMBHome;

# First Argument #  if [[ $UserHome == *"FS02/StudentsFolders$"* ]] then   echo "Make Changes to Plist";

# Seconde Argument #  else if [[ $UserHome == *"fs03/Stafffolders$"* ]] then    echo "Make different Changes to Plist";

# Third Argument #  else 

Echo "Make Changes to the plist";

我知道会有语法错误,请随时指出。

这是解决我的问题的正确方法吗?

【问题讨论】:

    标签: macos bash osx-yosemite


    【解决方案1】:

    挂载的卷通常位于/Volumes 目录中。你可能想要类似的东西

    if [ -d /Volumes/DiskOne ]; then # Is DiskOne mounted?
       ...
    elif [ -d /Volumes/DiskTwo ]; then # Is DiskTwo mounted
       ...
    else
       ...
    fi
    

    【讨论】:

    • @EtanReisner 与 Unix/Linux 不同,OSX 认为当没有挂载时挂载点不存在。去图:-)
    • "/Volumes/DiskOne" 周围的一些双引号将在这里树立一个很好的例子,尽管并非绝对必要,因为 Mac 用户经常使用空格,以及 Apple ...例如,Macintosh HDTime Machine
    • @MarkSetchell 呵呵。 Unix/Linux 也可以看到,在您“修复”该“问题”之前,您将无法在该位置安装任何东西。 =)
    • 谢谢小伙子,我明天试试你的输入,让你知道我的进展:)
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2011-06-23
    • 2012-12-09
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多