在函数aix中使用if语句

问题描述 投票:0回答:1

我在尝试让 if 语句在函数内部工作时遇到困难。我正在使用一个非常简单的示例,如下所示,在脚本执行后回显 $1 变量:

脚本内部的逻辑

STATUS() {

if [[ $1 == "-s" ]];then
   echo "--------------------------------------------------------"
   echo "Test success at: `date`:"
   echo "--------------------------------------------------------"
else
   echo "--------------------------------------------------------"
   echo "Test fail at: `date`:"
   echo "--------------------------------------------------------"
fi
}

STATUS

执行示例:

ksh chris_test.sh -s

预期输出:

--------------------------------------------------------
Test success at: Sun Jan  7 06:59:34 GMT 2024:
--------------------------------------------------------

我得到了什么:

--------------------------------------------------------
Test fail at: Sun Jan  7 06:59:34 GMT 2024:
-------------------------------------------------------- 

我试图转义双引号和美元符号,包括方括号,甚至尝试使方括号成为单引号也没有什么区别。仍见失败。我哪里错了?

function shell if-statement ksh
1个回答
0
投票

STATUS()
内部,
$1
不是指脚本的第一个参数,而是指函数的第一个参数。当您调用该函数时,您需要转发脚本的参数,以便它可以读取它们。
"$@"
就是这样做的。无论有多少参数,它都会扩展为
"$1" "$2" "$3" ...
,并且正确引用它们,以便保留空格和其他特殊字符。

STATUS "$@"
© www.soinside.com 2019 - 2024. All rights reserved.