【发布时间】:2013-03-27 19:53:01
【问题描述】:
我写了一个函数:
check_log(){
if [ -f "/usr/apps/appcheck.log" ]
then
return 1
else
return 0
fi
}
然后我在“if”条件下调用这个函数:
if [ check_log ];
then
........statements....
fi
这行得通吗?我在这里很困惑,因为 bash 在成功时返回 0,在失败时返回 1,但是我的函数返回 1 并且条件正在检查 1/0,它得到 1 并且它应该给出失败,但是在我的 shell 脚本条件通过了。
谁能解释一下这个问题?
【问题讨论】:
-
如果 [ any number ] 做某事,如果 [ 0 ] 什么都不做,那么 number 呢
-
在 bash 中,您将为此使用数字上下文 -- 不是
[ ]或[[ ]]而是(( ))-- 像这样:if (( variable )); then ...只有在 @987654331 时才会评估为 true @ 包含大于 0 的数字。 -
...顺便说一句,当“使用 bash”时,请确保您的 shebang 是
#!/bin/bash或#!/usr/bin/env bash,而不是#!/bin/sh;如果是后者,则并非所有 bash 功能都会启用,因此此处给出的建议并非都有效。
标签: bash testing if-statement