我想知道只有在这个脚本存在的情况下,是否有更简单的方法在bash中执行脚本。我想要的相当于:
if [ -x $name ]
then
$name
fi
或
[ -x $name ] && $name
我正在寻找的是像
exec_if_exist $name
消除了重复的脚本名称。
有没有办法在bash中简化这个? 我不想要一个函数或“推测”执行,这会给命令找不到错误。
最佳
答案 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