Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash中调用带参数的函数?_Bash - Fatal编程技术网

如何在bash中调用带参数的函数?

如何在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

我有一个用于测试软件的函数。我必须调用这个函数,其中函数有两个参数,即currentSetName和failureDetected。代码如下:

#!/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这解决了我的问题。对不起,我以前没说过