我越来越接近这个:
myif() {
if ([ $1 ]) then
shift
$*
true
else
shift
shift
$*
false
fi
}
主要部分是if ([ $1 ]) then
不正确的。我希望能够做这三件事:
# boolean literals, probably passed in as the output to variables.
myif true successhandler failurehandler
myif false successhandler failurehandler
# a function to be evaluated
myif checkcondition successhandler failurehandler
checkcondition() {
true
# or:
# false, to test
}
以下用于检查文件:
file_exists() {
if ([ -e $1 ]) then
shift
$*
true
else
shift
shift
$*
false
fi
}
想知道如何让第一个示例在处理这 3 个案例的情况下工作。我也尝试过使用eval
并这样做:
myif() {
if ([ "$*" ]) then
shift
$*
true
else
shift
shift
$*
false
fi
}
但是不行。
看起来你想执行
$1
,并根据它的成功或失败,执行$2
或$3
。这是一种方法:在这里,我创建了成功处理程序、失败处理程序和检查条件的任意版本来演示该行为。
以下是一些示例运行:
在里面
myif()
,我专门把 stdout 和 stderr 放到了/dev/null
;根据您的喜好进行调整。