Jum*_*Box 27 testing bash if-statement
我写了函数
check_log(){
if [ -f "/usr/apps/appcheck.log" ]
then
return 1
else
return 0
fi
}
Run Code Online (Sandbox Code Playgroud)
然后我在if条件下调用此函数
if [ check_log ];
then
........statements....
fi
Run Code Online (Sandbox Code Playgroud)
这会有用吗?我很困惑,因为bash在成功时返回0,在失败时返回1.但我的函数返回1并且条件检查1/0,它得到1并且它应该给出失败,但是在我的shell脚本条件中正在传递.
任何人都可以通过这个问题解决一下吗?
谢谢 !
Joh*_*ica 53
if [ check_log ];
Run Code Online (Sandbox Code Playgroud)
使用方括号时,您正在调用该test命令.它等同于if test check_log简写if test -n check_log,这反过来意味着"如果"check_log"不是空字符串".它根本不会调用你的check_log功能.
把它改成这个:
if check_log;
Run Code Online (Sandbox Code Playgroud)
顺便说一下,函数可以更简单地写成:
check_log() {
! [ -f "/usr/apps/appcheck.log" ]
}
Run Code Online (Sandbox Code Playgroud)
函数的返回值是最后一个命令的退出状态,因此不需要显式的return语句.