Bash函数:一元运算符预期错误
我正在学习bash脚本,目前在函数中使用Bash函数:一元运算符预期错误,bash,Bash,我正在学习bash脚本,目前在函数中使用if语句时遇到了问题。下面的代码返回两个错误;它们都引用了if和elif条件,并表示[:12000:预期的一元运算符 function calculateBonus { # If the sales figure is greater than 1 million, bonus is £1500 if [ $1 >= 1000000 ] then bonus=1500 # If greater than
if
语句时遇到了问题。下面的代码返回两个错误;它们都引用了if
和elif
条件,并表示[:12000:预期的一元运算符
function calculateBonus {
# If the sales figure is greater than 1 million, bonus is £1500
if [ $1 >= 1000000 ]
then
bonus=1500
# If greater than 100000, bonus is £750
elif [ $1 >= 100000 ]
then
bonus=750
else
bonus=0
fi
# Return the bonus figure
return $bonus
}
read sales
bonus=$(calculateBonus $sales)
我尝试过使用双方括号,但出于某种原因,我遇到了语法错误。有人能解释一下上面的错误原因,以及我使用[[some\u condition]]
而不是[some\u condition]
时出现语法错误的原因吗
function calculateBonus {
# If the sales figure is greater than 1 million, bonus is £1500
if [ $1 -ge 1000000 ]
then
bonus=1500
# If greater than 100000, bonus is £750
elif [ $1 -ge 100000 ]
then
bonus=750
else
bonus=0
fi
}
read sales
calculateBonus $sales
echo $bonus
-ge
=>大于或等于
请参见与[
相同的人工测试,帮助[
指导您进行人工测试
用于bash(字典/词典顺序)中的字符串比较
注意:bash还有一个高级if条件操作符[[
,它具有test
或[
以及更多功能,请参阅帮助[[
-ge
=>大于或等于
请参见与[
相同的人工测试,帮助[
指导您进行人工测试
用于bash(字典/词典顺序)中的字符串比较
注意:bash还有一个高级if条件操作符[[
,它具有测试
或[
以及更多功能,请参阅帮助[[[
尝试以下操作:
function calculateBonus() {
if (( $1 >= 1000000 )); then
bonus=1500
elif (( $1 >= 100000 )); then
bonus=750
else
bonus=0
fi
}
read sales
calculateBonus "$sales"
echo "Bonus is $bonus"
(())
是算术求值。该函数设置变量bonus
,该变量可在调用函数后使用。函数中的返回值
与您可能认为的不一样(它是退出代码)。另请参阅关于从函数返回值
对各种测试结构进行了很好的讨论,并举例说明。尝试以下方法:
function calculateBonus() {
if (( $1 >= 1000000 )); then
bonus=1500
elif (( $1 >= 100000 )); then
bonus=750
else
bonus=0
fi
}
read sales
calculateBonus "$sales"
echo "Bonus is $bonus"
(())
是算术求值。该函数设置变量bonus
,该变量可在调用函数后使用。函数中的返回值
与您可能认为的不一样(它是退出代码)。另请参阅关于从函数返回值
对各种测试结构进行了很好的讨论,并举例说明。IIRC更大相等的运算符不是=
,而是-ge
。查看人工测试(测试应与[
相同)IIRC更大相等的运算符不是=
,而是-ge
。查看人工测试(测试
应与[
相同)啊,我明白了,非常感谢对其进行排序。与此分开,当我回显$bonus时,它不会回显任何内容。为什么CalculateBunus的返回值没有分配给$bonus?在这种情况下,是的,我可以。但是如果我需要将值返回到变量而不是仅仅回显它,为什么上面的操作不起作用?啊,我明白了,非常感谢对其进行了排序。与此分开;当我回显$bonus时,它不会回显任何内容。为什么CalculateBunus的返回值没有指定给$bonus?在这种情况下,是的,我可以。但是如果我需要将值返回到变量而不是仅仅回显它,为什么上面的操作不起作用?谢谢e0k,非常全面,并回答了我的另一个问题谢谢e0k,非常感谢综合回答了我的另一个问题