Bash执行错误(-1715):无法装入卷路径

时间:2015-06-01 23:45:31

标签: macos bash shell scripting

我正在寻找一些子程序的帮助,我正在编写作为我们Mac机群的备份脚本的一部分。脚本的这个片段正在检查网络卷是否已经安装,如果没有,它将安装它。我遇到了一个我没有正确调用变量的问题。我不确定我是否正确引用参数。错误讯息:

0:29: execution error: Some parameter wasn’t understood. (-1715)

我正在尝试运行的命令:

osascript -e 'mount volume "afp://some.server.com"'

这很有效。但是,执行该命令时,以下脚本不起作用:

#!/bin/bash
#
# SCRIPT TESTING SANDBOX

archive_volume="/Volumes/Users"
volume_path="afp://some.server.com"

# Check and see if the Network share is mounted already
if [[ -d "${archive_volume}" ]]; then 
  echo "The Archive Network share is already mounted."
  exit 1
else
  echo  "\nMounting volume...Please enter your OD credentials."
  # Wait for a bit to mount the drive so we catch the message
  sleep 1
  # Mount the share volume
  osascript -e 'mount volume "${volume_path}"'
fi
exit 0

1 个答案:

答案 0 :(得分:0)

  
    

osascript -e "mount volume \"${volume_path}\""这样的东西应该     工作。 - Andrew Medico

  
     

请注意,如果你能解释使用“前进”背后的含义   斜杠“\"${some_variable}\"? - Tan

Bash Reference Manual, Quoting

  

双引号可以在双引号之前引用   反斜杠。

在没有反斜杠\

的命令中
osascript -e "mount volume "${volume_path}""

"之前${volume_path}将结束第一个部分字符串mount volume "之后${volume_path}将开始(空)最后一个部分字符串;那些字符串和${volume_path}的扩展仍将连接到一个参数,e。克
mount volume afp://some.server.com,但"不在结果参数字符串中,而\"这些双引号(反斜杠删除)是参数的一部分:
mount volume "afp://some.server.com"

如果你想明确引用${volume_path}的扩展(允许空格和其他特殊字符),你也可以写

  osascript -e "mount volume '$volume_path'"

(变量扩展发生,因为在"'没有抑制意义。)