加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读