在bash脚本中使用if语句中的函数和参数

时间:2018-06-13 09:16:05

标签: bash

我正在尝试在解析其中一个参数时测试多个函数调用的返回值。我尝试过以下但是没有用。

你能帮忙吗?

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
...

此示例仅在尝试执行函数时返回错误。

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函数。