将条件传递给函数

时间:2016-08-24 08:20:19

标签: bash shell

我试图将函数传递给一个在while循环中应用的条件,如果是,则增加该条件的变量。 如果可能在bash上?这是一个示例代码

a(){
    condition=$1
    echo "condition:$condition"
    while [[ $condition ]] # --> run the condition
    do
        num1=num1+1
        echo "increase num1:$num1"  # num1 is a var of the condition
    done   
}


b(){
    num1=1
    num2=3
    `a $num1 < $num2` 
}

b

4 个答案:

答案 0 :(得分:3)

您也可以使用如下;

#! /bin/bash

a(){
    condition="(( \$num $2 $3 ))"
    num=$1
    while eval $condition
      do
        (( num++ ))
        echo "increase num1:$num" 
      done   
}


b(){
    num1=1
    num2=5
    a $num1 '<' $num2
}

b

答案 1 :(得分:3)

我只会传递eval可以调用的函数的名称,而不是a

a () {
    while "$1"; do
        ...
    done
}

b(){
    num1=1
    num2=3
    c () (( num1 < num2 ))
    a c
}

b

(请注意,功能始终是全局的; c不是b正文的本地。)

答案 2 :(得分:2)

您可以执行以下操作:

{{1}}

答案 3 :(得分:1)

您可以尝试:

#!/bin/bash 

a(){
    condition="expr $1 > /dev/null"
    while eval $condition; do
        echo "num1=$num1 num2=$num2"  
        let num1++
    done   
}


b(){
    num1=1
    num2=3
    a '$num1 \< $num2'
}

b

记住命令expr 1 < 3会产生错误:

$ expr 1 < 3
bash: 3: No such file or directory

这是写\<而不是<

的原因