找回密码
 注册
关于网站域名变更的通知
查看: 271|回复: 1
打印 上一主题 下一主题

shell脚本中的局部变量都有哪些?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-10-9 15:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在shell中定义函数可以使代码模块化,便于复用代码。不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题。
4 h2 @7 F, ]) `/ j: I
) a( u) Q1 X  v0 z. R(1)Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。0 ]( I9 L. K; v; V& c7 ?- Q# \

  \6 O" L' _. T  U7 z: `$ n% T! s& y! `& C; K! }
例1:脚本变量的作用域
7 Z! o* Z4 m' _4 p( F0 o' ~
#!/bin/bash
0 m, l' K6 c8 W, A. I; J7 j+ v#define the function ltx_func
/ c: h( a0 Q0 Dltx_func()
/ _$ W  `" f5 E! @$ X/ F0 ^{
0 v5 B, d$ S) \' t4 o9 k; j" \# l% ]   echo $v1% X5 y* |8 R$ P1 b/ P2 I" L; L
   #modify the variable v1
# B, [2 e# P+ f( ?! K1 |   v1=200
1 Q) X" n& F( P: g}
7 o3 ?1 K+ }; r#define the variable v1$ P+ D' W- e2 [2 c9 g" ~! k
v1=100
0 ]$ u" v2 C6 O* a#call the function ltx_func2 d$ P( `/ `1 T7 ?  D
ltx_func6 M4 |# n, T5 `2 g- P1 ?
echo $v1
; x: e8 x- ^+ u2 X3 a- a, j3 Y; T
% r: Z1 R( y$ U
结果:
9 b, _2 }0 }2 q3 [+ p7 k

8 f  |# u# i' N/ t2 \/ {100' w' Y) S, q5 Z/ s7 w
200

' i7 J6 F0 g3 _( `. r2 g" K4 Y7 T) K, U, k3 F* C+ r
解析:脚本变量v1的作用域从被定义的地方开始,到shell结束。调用函数ltx_func的地方在变量v1的作用域内,所以能够访问并修改变量v1。0 _) ^# I0 Y- t( I- I

, S9 K, O1 u( Z. w* m8 d(2)Shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。' {: N3 |- h4 X; d2 [! Q

# [( q6 g& Z$ |" m
: u+ k4 Z& K( U2 X( M例2:函数定义的global变量
! r! h! o% k, S7 o7 h# e
游客,如果您要查看本帖隐藏内容请回复

8 s" W5 Q- ~; f( r, I1 p+ l2 @0 L0 n& t+ V

$ h: G/ B1 g2 d: f
4 [4 X) D9 r  K  |

) P+ F7 U7 S$ E( W0 V
+ g4 d# K, Y3 j

该用户从未签到

2#
发表于 2019-10-9 18:46 | 只看该作者
看看shell脚本中的局部变量都有哪些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 02:00 , Processed in 0.171875 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表