为了使我的脚本更具可读性,我想将if-then-else-fi语句的测试放在一个函数中,例如下面的例子:
#!/bin/bash
function isFileUnderVersionControl() {
test $( svn info "$1" 2>1 1>/dev/null; echo $? ) -eq 1
}
if isFileUnderVersionControl "$1"
then
echo "is under version control
else
echo "is not under version control"
fi
这是否可以在bash中使用?如果是这样,如何正确地执行它?
答案 0 :(得分:2)
不需要test
:
if svn info "$1" &>/dev/null ; then
echo Under version control
else
echo Not under vc
fi
或者,如果您需要该功能:
function isFileUnderVersionControl() {
svn info "$1" &>/dev/null
}
if isFileUnderVersionControl "$1" ; then ... fi
答案 1 :(得分:0)
Bash函数只能返回状态代码而不能返回任何其他内容。 return 语句设置该状态代码的值,如果不存在,则将状态代码设置为函数内执行的最后一个命令的状态代码。在这种情况下,它是测试命令,您可以使用退出状态变量 $?
检查其返回状态代码isFileUnderVersionControl "$1"
rc=$?
if [[ $rc -eq 0 ]]
then
echo "is under version control"
else
echo "is not under version control"
fi