bash – 为Shell脚本中的函数分配参数
发布时间:2020-12-16 01:44:45 所属栏目:安全 来源:网络整理
导读:我最近开始学习编写 Shell脚本,让我困惑的一件事就是参数赋值的顺序. 这是我困惑的代码 #!/bin/bashExpression() { local num3=$1 local num4=$2 local num5=$3 local sum=$(((num3-num4)+num5))echo $sum}num1=5num2=3num3=7sum=$(Expression num1 num2 num
我最近开始学习编写
Shell脚本,让我困惑的一件事就是参数赋值的顺序.
这是我困惑的代码 #!/bin/bash Expression() { local num3=$1 local num4=$2 local num5=$3 local sum=$(((num3-num4)+num5)) echo $sum } num1=5 num2=3 num3=7 sum=$(Expression num1 num2 num3) echo "The result is $sum" 而不是将输出作为 The result is 9 自5-3 7 = 9 我是这样的 The result is 7 有人能解释一下吗? 解决方法
正确的代码:
#!/bin/bash Expression() { local num4=$1 local num5=$2 local num6=$3 local sum=$((((num4-num5))+num6)) echo $sum } num1=5 num2=3 num3=7 sum=$(Expression num1 num2 num3) echo "The result is $sum" 输出: ./script.sh The result is 9 为什么你的代码不起作用?当您使用bash -x选项运行代码时,您将看到不同之处: $bash -x ./script.sh + num1=5 + num2=3 + num3=7 ++ Expression num1 num2 num3 ++ local num3=num1 ++ local num4=num2 ++ local num5=num3 ++ local sum=7 ++ echo 7 + sum=7 + echo 'The result is 7' The result is 7 num3声明为本地变量和全局变量.由于函数使用的是本地函数,因此使用值5而不是预期的7. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |