【发布时间】:2015-08-15 14:23:21
【问题描述】:
我正在为我正在编写的子例程寻求帮助,该子例程是我们 Mac 机群的备份脚本的一部分。脚本的这个 sn-p 正在检查网络卷是否已安装,如果没有,它将安装它。我遇到了一个问题,我没有正确调用变量。我不确定我是否正确引用了参数。错误信息:
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
【问题讨论】:
-
尝试将
osascript替换为echo。然后你应该看看有什么问题,例如'. 内的变量替换 -
变量替换不会发生在单引号字符串中。
-
很棒的调试技巧。不知道为什么我没有更早地使用 echo 进行故障排除。我已经按照建议完成了:
echo "${volume_path}"。它似乎打印回变量名some.server.com。这一定是我在命令上传递引号的方式......@Ned Deily -
谢谢,@Andrew。变量替换比我目前对 bash 脚本的了解要先进一些。您如何建议我们使用适当的引用来引用变量?
-
osascript -e "mount volume \"${volume_path}\""这样的东西应该可以工作。
标签: macos bash shell scripting