我试图将函数传递给一个在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
答案 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
这是写\<
而不是<