2016-11-12 13 views
1
變量文件

我此刻的代碼是:無法弄清楚如何運行存儲在終端的shell腳本「發現」發現OSX

#!/bin/bash 
cd "/Users/{User}/Documents/jarfiles/" 
runnable_game=$(find . -type f -name 'game\..*\.jar') 
echo $runnable_game 
eval $runnable_game 

在我的文檔文件夾中我有一個文件夾jarfiles,並在該文件夾中只有1個jar文件,儘管如果可能只會使其選擇找到的第一個文件。

目標是執行此文件。例如:/Documents/jarfiles/game.1234.jar應該運行。

對於調試我把一個回聲在那裏,但回聲什麼也沒有返回,一個空行。

我有一些編程技巧,但我不專業,並沒有用過shell腳本或終端命令行的魔法。 (我在Java,C等程序...)

任何想法使腳本找到一個文件並運行它?

澄清: 我不提前知道文件名的.jar文件到該格式應該來說,基本上我將文件下載到該目錄是在格式

+0

也許只是'Java的罐子/用戶/ $ USER /文件/ jarfiles中/ game1234.jar'? –

+0

澄清我不知道文件名預先的任何.jar文件應該運行,該格式應該運行,基本上我下載一個文件到該格式的文件 – AgentM

+0

假設有** 10 **'.jar'文件。你究竟會選擇文件來運行?解釋邏輯。你可能根本不需要'find'命令。 –

回答

1

要執行jar文件,你知道是有,但你不知道確切的名稱, 你可以使用一個簡單的shell通配符, 你不需要find命令:

java -jar game*.jar 

如果要執行才發現的第一個文件,然後find可以確實有用:

find . -name 'game*.jar' -exec java -jar {} \; -quit 
+0

使用find的第二個例子:這種寫命令的方式是常規的,我應該使用上面的'java -jar $(find。-name'game。* jar')',在我的情況下,它以相同的方式工作,還是有區別? – AgentM

+0

我給你的版本更安全,即使你在文件路徑中有奇怪的字符,它也能工作。這是通常推薦的方式。 – janos

+0

好的謝謝人:) – AgentM

0

正確的shell代碼運行「遊戲」 + 任意字符串 +「罐子」

#!/bin/bash 
cd "/Users/{User}/Documents/jarfiles" 
java -jar $(find . -name 'game.*jar') 

game\..*\.jar使用\似乎不起作用 這將找到的文件開始遊戲,並與罐子,不是遊戲結束逃跑。和.jar,這不是問題(目前)。

+1

不,這不是正則表達式,'。*'不起作用。它應該是'遊戲*罐子' – anubhava

+0

@anubhava非常感謝你肯定會幫助 – AgentM

+0

以及這是一個答案,可能稍微有點解決,但它確實爲我工作,但我仍然應該驗證@janos的答案因爲它更準確。如果這不是問題的答案,那麼我肯定是錯誤地問了這個問題。無論如何,我的錯誤。 – AgentM