我正在寻找一些子程序的帮助,我正在编写作为我们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
答案 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'"
(变量扩展发生,因为在"
内'
没有抑制意义。)