Mac OSX - 允许通过GUI或提示输入shell脚本中的用户

时间:2015-06-15 20:25:03

标签: macos bash shell

第一次发布,请告诉我如何改进..

我创建了一个shell脚本,需要一个人输入他们的名字,然后生成一个报告。当chmod进入可执行脚本并从终端运行时,脚本可以根据需要运行。但是,我想部署它并让它成为双击类型的解决方案,而不是指示人们从终端运行它..

我尝试在Platypus中包装脚本,这样可以轻松启动但是它不允许用户输入,这很关键..

我刚刚发现了cocoaDialog,但我主要担心的是它是否会提供我需要的功能,如果没有其他人安装它就会这样做......

有没有人遇到这种情况,或者可以提供和指示。

谢谢。

3 个答案:

答案 0 :(得分:12)

为了记录,我测试了(在OS X Yosemite上)以下脚本(namescript),它使用read命令接受用户输入。在chmod +x namescript之后,双击Finder正确启动脚本并接受用户输入。

    #! /bin/bash

    echo "Please enter your name"
    read name
    echo "Your name is $name"

选择没有扩展程序(如namescript)或.command扩展程序(namescript.command)的脚本名称非常重要。默认情况下,使用.shnamescript.sh)会导致双击以在文本编辑器中打开脚本,如OP中所述。

答案 1 :(得分:3)

OS X(大部分)都包含所有电池,只需使用它。 :)

为此,您可以使用Automator.app。使用Automator,您可以创建包含shell脚本的可执行应用程序(例如your.app),并询问用户输入。

示例,要求输入两个:" name"和"年"你应该做到以下几点:

  • 启动Automator
  • 选择"应用程序"
  • 点击"图书馆"如果隐藏库,则工具栏上的按钮
  • 将以下操作从库拖到工作流程
    • "询问文字"
      • 输入问题:"名字和姓氏:"
      • 点击"需要答案"
    • "设置变量值"
      • 创建新变量" name"
    • "询问文字"
      • "输入第二个问题,例如"输入年份:"
      • 添加默认值,例如2015(如果想要)
      • 点击"要求回答"复选框
      • 检查"忽略此操作输入"在"选项"
    • "获取变量的值
      • 选择"名称"
    • "运行Shell脚本"
      • 选择"传递输入" - > "作为参数"
      • copy&将shell脚本粘贴到窗口中,如:
year="$1"
name="$2"
echo "Report for name: $name year: $year"
  • 另外,您可以添加最终操作"复制到剪贴板",例如shell脚本的输出将进入剪贴板。

保存脚本(您将获得name.app - 标准OS X .app应用程序),只需将其添加到.dmg或从中创建.zip即可部署它。

阅读这个答案时,一切都要快得多。 ;)

答案 2 :(得分:2)

根据我的理解,我建议您查看Applescript,因为这将允许您拥有GUI界面以及执行' SHELL'命令。

首先,我会打开脚本编辑器'预装在Mac上的程序

这是一个示例脚本,询问用户的名字,然后通过执行shell命令"说出名称"

display dialog "What is you name? " default answer "" buttons {"Say It"} default button 1
text returned of the result
do shell script "say " & result

您也可以将with administrator privileges附加到do命令,这将使其以管理员权限运行(询问管理员用户名和密码)

示例:

display dialog "What is you name? " default answer "" buttons {"Say It"} default button 1
text returned of the result
do shell script "say " & result with administrator privileges

希望这会有所帮助。