shell变量的作用域(全局和局部变量)(六)

本文介绍了Shell变量的作用域,包括全局变量和局部变量的概念。全局变量在当前Shell会话中有效,而局部变量则限制在函数内部。通过`local`关键字可在函数内定义局部变量,确保其作用范围的限制。

变量的作用域

Shell 变量的作用域,就是 Shell 变量的有效范围(可以使用的范围)。在不同的作用域中,同名的变量不会相互干涉。 有的变量可以在当前 Shell 会话中使用,这叫做全局变量(global variable); 有的变量只能在函数内部使用,这叫做局部变量(local variable);

1.全局变量

所谓全局变量,就是指变量在当前的整个 Shell 会话中都有效。每个 Shell 会话都有自己的作用域,彼此之间互不影响。在 Shell中定义的变量,默认就是全局变量,其作用域为从变量定义开始的地方,到shell结束或者被显式的删除。

需要强调的是,全局变量的作用范围是当前的Shell 会话,而不是当前的 Shell 脚本文件,它们是不同的概念。打开一个 Shell 窗口就创建了一个 Shell 会话,打开多个Shell 窗口就创建了多个 Shell 会话,每个 Shell 会话都是独立的进程,拥有不同的进程 ID。在一个 Shell会话中,可以执行多个 Shell 脚本文件,此时全局变量在这些脚本文件中都有效。

#!/bin/bash

function fun1() {
    temp=$[ $value + 5 ]
    result=$[ $temp * 2 ]
}

temp=4
value=6

fun1

echo "The result is $result"
if [ $temp -gt $value ];then
    echo "temp is larger"
else
    echo "temp is smaller"
fi
添加执行权限,查看执行结果
[root@bogon ~]# vim variable10.sh
[root@bogon ~]# chmod +x variable10.sh 
[root@bogon ~]# ./variable10.sh 
The result is 22
temp is larger

2.局部变量

局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部。在shell中,可以使用 local 关键字在函数内部来定义局部变量,函数内部参数也是局部变量。

#!/bin/bash

function fun1() {
    local temp=$[ $value + 5 ]
    result=$[ $temp * 2 ]
}

temp=4
value=6

fun1

echo "The result is $result"
if [ $temp -gt $value ];then
    echo "temp is larger"
else
    echo "temp is smaller"
fi
添加执行权限,查看执行结果
[root@bogon ~]# vim variable11.sh
[root@bogon ~]# chmod +x variable11.sh 
[root@bogon ~]# ./variable11.sh 
The result is 22
temp is smaller
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值