我正在尝试在解析其中一个参数时测试多个函数调用的返回值。我尝试过以下但是没有用。
你能帮忙吗?
main() {
if prepareEnvironment "$1" &&
buildInterfaceConfiguration &&
applyNetworkInterfaceFiles
then
echo ':D INSTALLATION COMPLETED :D'
echo ''
else
echo ''
echo ':( INSTALLATION FAILED :('
echo ''
fi
}
prepareEnvironment() {
echo '####################################################################################'
echo 'Preparing environment'
echo '####################################################################################'
echo "num arg: $#"
echo "arg: $1"
echo $1
...
此示例仅在尝试执行函数时返回错误。
答案 0 :(得分:2)
子shell $(...)
是问题所在,只需编写
if prepareEnvironment "$1" &&
buildInterfaceConfiguration &&
applyNetworkInterfaceFiles
then
...
假设prepareEnvironment "$1"
始终打印some text
,那么您的$(...)
版本将等同于...
if some text &&
buildInterfaceConfiguration &&
applyNetworkInterfaceFiles
then
...
...无论prepareEnvironment "$1"
的退出状态如何。在这种情况下,some
不能将bash
解释为命令,因此会出错。
关于缺失的论点:
我看到你在函数prepareEnvironment "$1"
内调用了main
。如果您想使用$1
,则必须先将其传递给main
函数。