2014-02-21 51 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

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