如何在bash中执行脚本?

时间:2014-02-21 06:13:31

标签: bash

我想知道只有在这个脚本存在的情况下,是否有更简单的方法在bash中执行脚本。我想要的相当于:

if [ -x $name ]
then
  $name
fi

[ -x $name ] && $name

我正在寻找的是像

exec_if_exist $name

消除了重复的脚本名称。

有没有办法在bash中简化这个? 我不想要一个函数或“推测”执行,这会给命令找不到错误。

最佳

3 个答案:

答案 0 :(得分:5)

您可以使用type命令稍微简化一下。通过测试,它需要文件的完整或相对路径。使用type,它将搜索PATH。

type $name && $name

它也很好,因为它在STDOUT上成功并在STDERR上失败,让您完全控制输出

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

答案 1 :(得分:1)

为什么不

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

并且,在调用$ 1时可能需要考虑路径。

答案 2 :(得分:0)

type似乎并不总是在OS X上运行。有效的是

which -s command && command