在Applescript中运行bash脚本

3
我遇到了一个问题,无法从Applescript中执行bash脚本。我需要的是,Applescript文件可以提示输入用户名和密码,以便bash脚本以sudo权限运行,因为它正在执行一些管理员权限无法完成的任务,例如写入/etc/目录。这个脚本(打包在使用Platypus创建的.dmg文件中)将分发给多个用户,我不能依赖于绝对路径,而需要在运行时获取Applescript文件的路径,获取sudo权限,并在相同的目录中运行bash脚本。
到目前为止,通过SO帖子和其他网站,我能想到的每一种方法都导致osascript无法找到bash脚本。有什么想法吗?
看起来这可能有效,但它会出现语法错误:
set wd to do shell script "pwd"

tell application "Terminal"
    set run_cmd to "/bin/bash " & wd & "/osx.sh"
    do script run_cmd with administrator privileges
end tell

您应该适当地发布相关的AppleScript代码。 - Andreas Louv
脚本终端应用程序不需要,可以使用“do shell script”命令。而相对路径可以通过几个“path to…”形式简单地创建。Bash脚本位于哪里? - vadian
1个回答

1
如果您的脚本保存为应用程序,则必须包含以下内容:
Set myPath to path to me

变量myPath将是您的应用程序的完整路径。从那里,您只需添加您的子文件夹,例如“Contents:Resources:my_shell_script”以了解您的shell脚本在哪里。不要忘记将您的路径转换为posix(Unix)路径,以便于执行do shell script命令。
要询问用户密码,您可以使用display dialog,并使用hidden选项来隐藏输入的字符:
set myInput to display dialog "Enter your password" default answer "" with hidden answer
set myPwd to text returned of myInput

获取用户名有很多可能的方法;这只是其中一种:

set UserName to do shell script "/usr/bin/whoami"

然而,如果该用户没有管理员权限,您仍然需要请求管理员用户名。
最后但并非最不重要的是,您的shell脚本可以使用do shell script运行(正如Vadian所说)。
Set R to do shell script "my_script-here"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接