如何在bash中调用带参数的函数?
我有一个用于测试软件的函数。我必须调用这个函数,其中函数有两个参数,即currentSetName和failureDetected。代码如下:如何在bash中调用带参数的函数?,bash,Bash,我有一个用于测试软件的函数。我必须调用这个函数,其中函数有两个参数,即currentSetName和failureDetected。代码如下: #!/bin/bash failureDetected=0 nbOfAllTests=0 nbOfDetectedFailures=0` currentSetName="fair" count_input=1 removeFromCurrentSet(){ if [[("$1" == "good")]] then #mv Part
#!/bin/bash
failureDetected=0
nbOfAllTests=0
nbOfDetectedFailures=0`
currentSetName="fair"
count_input=1
removeFromCurrentSet(){
if [[("$1" == "good")]]
then
#mv Partition/currentSet/* Partition/good_used
echo "Hai good"
elif [[("$1" == "fair")]]
then
if [[("$2" == "0")]]
then
#mv Partition/currentSet/* Partition/poor_used
echo "hai fair poor_used"
else
#mv Partition/currentSet/* Partition/good_used
echo "hai fair good"
fi
else
#mv Partition/currentSet/* Partition/poor_used
echo "jjj poor"
fi
}
removeFromCurrentSet currentSetName failureDetected
我使用上面的代码,但效果不好。你能帮我解决这个问题吗?如何准确地调用函数?您传递的参数不正确。您的原始代码相当于
removeFromCurrentSet "currentSetName" "failureDetected"
只传递两个字符串,因为未展开currentSetName
和failureDetected
。您需要首先使用$
展开变量
要将变量的值传递给函数,请尝试以下操作:
removeFromCurrentSet "${currentSetName}" "${failureDetected}"
你没有正确地传递参数。您的原始代码相当于
removeFromCurrentSet "currentSetName" "failureDetected"
只传递两个字符串,因为未展开currentSetName
和failureDetected
。您需要首先使用$
展开变量
要将变量的值传递给函数,请尝试以下操作:
removeFromCurrentSet "${currentSetName}" "${failureDetected}"
只有在
$
+变量表达式周围的字符会被解释为它的一部分时,才需要大括号。谢谢@jotik这解决了我的问题。很抱歉,我以前没有说过,只有当$
+变量表达式周围的字符被解释为它的一部分时,才需要大括号。谢谢@jotik这解决了我的问题。对不起,我以前没说过