将多个参数从Applescript传递到终端命令脚本

时间:2015-03-03 13:30:47

标签: macos bash parameters terminal applescript

我一直在试图弄清楚如何将多个参数从Applescript传递到终端命令脚本。例如,当运行终端命令文件时,您可以以编程方式接收参数:

#!/bin/bash

var=$1

var=$2

我一直在使用的Applescript代码如下所示:

tell application "System Events" to set app_directory to POSIX path of (container of (path to me))

set thisFile to "Dev"

set testTarget to "/Users/lab/Desktop/TestTarget/"

do shell script "/Users/lab/Desktop/TempRoot/mycommand.command " & thisFile & testTarget with administrator privileges

我认为我出错的地方是输入第二个参数。当我只有一个参数时,它经历了很好的事情:

do shell script "/path/to/command/mycommand.command" &var with administrative privileges

我很好奇传递第二个参数的正确语法是什么。如果有人有任何建议请告诉我!此外,如果您需要更多信息,我很乐意提供!

2 个答案:

答案 0 :(得分:1)

您只需在参数之间添加空格即可。目前,thisFiletestTarget之间没有空格。您的命令如下所示:

/Users/lab/Desktop/TempRoot/mycommand.command Dev/Users/lab/Desktop/TestTarget/

将shell脚本行更改为:

do shell script "/Users/lab/Desktop/TempRoot/mycommand.command " & thisFile & space & testTarget with administrator privileges

在构建脚本时我发现有用的一点是在运行它们之前确保我的shell命令是正确的。因此,不是直接构建它,而是将命令存储在变量中并记录它。稍后,使用do shell script命令替换logging语句。

set shellScript to "/Users/lab/Desktop/TempRoot/mycommand.command " & thisFile & space & testTarget with administrator privileges
log shellScript
-- do shell script shellScript

答案 1 :(得分:0)

这是@Darrick Herwehe发布的答案的简短描述。我只需要添加space关键字,命令就完美了。非常感谢!

do shell script "/Users/lab/Desktop/TempRoot/mycommand.command " & thisFile & space & testTarget with administrator privileges