2015-06-15 42 views
3

第一次交所以請讓我知道我怎麼能提高..Mac OSX版 - 允許通過GUI的shell腳本用戶輸入或提示

我創建這需要一個人來輸入自己的名字,然後一個shell腳本生成一個報告。該腳本在chmod到可執行腳本並從終端運行時根據需要工作。但是,我想部署它,讓它成爲一種雙擊類型的解決方案,而不是指示人們從終端運行它..

我試圖在鴨嘴獸包裝腳本,這使得它很容易啓動,但它不'允許從用戶輸入,這是至關重要的..

我剛剛發現cocoaDialog,但我主要關心的是,如果它會提供我需要的功能,如果它會這樣做,而沒有其他人安裝它...

有沒有人曾經在這種情況下,或可以提供和指針。

謝謝。

+0

在腳本的頂部添加一個shebang行,如:'#!/ bin/bash',並使用'chmod + x script.sh'使腳本可執行。而已。 – hek2mgl

+0

當我運行它時,我知道我的腳本在終端內完美工作。我正在尋找能夠雙擊文件的功能。它運行並接收輸入。如果我將該文件保存爲腳本,用戶將不得不從終端運行它或更改文件關聯來啓動腳本。 – SpacemanTrip

+0

嗯,在Linux上可以雙擊一個可執行的shell腳本從桌面執行它。如果你想要更復雜的東西(圖標,描述等),你需要創建一個.desktop文件(至少在Gnome中稱爲.desktop)。我想在OSX是類似的東西。 – hek2mgl

回答

9

爲了記錄,我測試了(在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)腳本選擇一個名字是非常重要的。默認情況下,如OP中所述,使用.shnamescript.sh)會導致雙擊以在文本編輯器中打開腳本。

+0

當腳本與終端打開關聯時,它可以正常工作。但默認是在文本編輯器中打開,這可能會導致我的問題。 – SpacemanTrip

+0

好的,如果你離開「.sh」 - 所以你有一個沒有擴展名的可執行文件 - 它可以正確地打開終端,而不必與os關聯的應用程序設置弄亂。 – scottgwald

+0

問題是如果我部署它並且有人下載腳本,那麼權限將被剝奪,並且用戶必須在下載完chmod後才能運行它。 – SpacemanTrip

1

從我的理解我會建議你看看蘋果腳本,因爲這將允許你有一個GUI界面以及執行'外殼'命令。

的一切我都開「腳本編輯器」程序的

首先自帶預裝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在做命令,這將使它以管理員權限運行(詢問管理員用戶名和密碼)

例子:

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 

希望這對我有所幫助。

+0

當我在創建腳本後開始四處探索時,AppleScript是最適合此任務的。我也會試一試,並保持發佈。 – SpacemanTrip

+0

它看起來像我回到AppleScript,因爲它有我想要的部署..只是我不能讓我的BASH腳本在其中工作。我瘋了。 – SpacemanTrip

+0

如果你有問題,我猜你可能會被卡在'返回結果的文本'上,只記得你的每個問題應該在這三行結構中進行佈局。 (問題 - >數據 - >函數) –

2

OS X有(主要)包括所有電池,只是使用它。 :)

爲此,您可以使用Automator.app。使用Automator,您可以創建可執行應用程序(例如your.app),其中包含您的shell腳本,並要求輸入用戶輸入。

實例,提出了兩個要求輸入:「名稱」和「年」,你應該做到以下幾點:

  • 啓動的Automator
  • 選擇「應用程序」
  • 點擊「庫」按鈕工具欄,如果圖書館是隱藏
  • 拖動從圖書館到工作流
    • 以下操作「請求文本」
      • 輸入問題: 「第一個和最後的名字:」
      • 點擊 「需要一個答案」
      • 「變量的值」 創建新變量 「名」
    • 「Ask for text」
      • 「輸入第二個問題,例如「輸入年份:」
      • 添加默認的例如2015年(如果想)
      • 點擊「需要一個答案」複選框
      • 勾選「忽略此輸入動作」中的「選項」
    • 「獲取變量
      • 選擇價值」的名字「
    • 」運行shell腳本「
      • 選擇 」通過輸入「 - > 」作爲參數「
      • 複製&粘貼您的shell腳本到窗口,如:
year="$1" 
name="$2" 
echo "Report for name: $name year: $year" 
  • 另外,還可以在最後加上行動 「複製到剪貼板」,例如shell腳本的輸出將進入剪貼板。

保存腳本(你會得到一個name.app - 標準的OS X應用程序.app),只需將其添加到.dmg或創建它.zip,你可以對其進行部署。

因爲讀了這個答案,一切都要快得多。 ;)

+0

我會試試看,似乎我將不得不調整我的腳本,因爲我有我的名字和姓氏變量在其中聲明...所以我會prob這些變量的劇本本身..我會更新,當我可以嘗試一下。 – SpacemanTrip

+0

該解決方案適用於我需要的工作流程。我有問題,使用以下名稱初始化命名我的文件:'initial =「$(echo $ first_name | head -c 1)」touch〜/ Desktop/$ initial $ last_name'但這可能只需要我調整位。感謝所有幫助過的人。 – SpacemanTrip

+0

請注意:使腳本可執行並使其成爲.com和ext似乎也爲我做了訣竅。 – SpacemanTrip

相關問題