2014-02-21 120 views
2

我不知道是否有一個更簡單的方法來在bash中執行腳本,只要這個腳本存在。我要的是等價於:如何在bash中執行腳本?

if [ -x $name ] 
then 
    $name 
fi 

[ -x $name ] && $name 

我所尋找的是類似

exec_if_exist $name 

免去了腳本的名稱的重複。

有沒有辦法在bash中簡化這個? 我不想要一個函數或「推測」執行,這會給命令找不到錯誤。

最佳

+0

所以想''rm'命令刪除文件如果存在像'rm -f script.sh'的權利?在你的情況下,你想執行它。 –

+0

我想了一件更簡單的事情:test -x $ name && $ _ – Jaro

回答

1

您可以用type命令有所簡化它。通過測試,它需要文件的完整路徑或相對路徑。用type它將搜索PATH。

type $name && $name 

它也是不錯的,因爲它把成功的標準輸出和失敗上STDERR,讓您在輸出完全控制

# mute success 
type >/dev/null 
# mute fail 
type 2>/dev/null 
# mute both 
type &>/dev/null 
1

爲什麼不

exec_if_exist() { 
    test -x $1 && $1 
} 

而且,路徑可能在調用$ 1時需要考慮。

+0

我不想要一個函數,因爲我需要在某處定義它並稍後處理(例如源代碼)。 thx – Jaro

+0

嗨,謝謝,我想出了一個更簡單的表單:test -x $ name && $ _它適用於我! – Jaro

+0

不客氣。是的,以你的方式工作是很好的。 $ _沒有找到我...... –