linux shell变量的,Linux之shell变量

1、本地变量

当前bash有效,新开一个窗口【新的bash】无效;

2、位置变量

$1,$2

比如:

shell_eg.sh中的内容如下

e685d26ebeb4

1.png

执行shell_eg.sh

source shell_eg.sh a b

返回

e685d26ebeb4

2.png

上面的命令中$1 指向第一个a,$2指向第二个b。

将shell_eg.sh中的内容修改为

e685d26ebeb4

3.png

执行shell_eg.sh

返回

e685d26ebeb4

4.png

其中$12,并没有返回第十二个变量值l,而是返回了第一个变量值a再加数字2。

再看另一个例子

abc=123

echo $abcyju

并没有返回123yju,此处将abcyju整体作为变量名,不存在这个变量,返回空

e685d26ebeb4

5.png

如果改为

echo ${abc}yju

就可以返回123yju了

返回

e685d26ebeb4

6.png

所以将shell_eg.sh中的内容修改为

e685d26ebeb4

7.png

执行shell_eg.sh

返回 #能够返回第十二个值l

e685d26ebeb4

8.png

在函数里面也可以用

定义test函数,然后执行

e685d26ebeb4

9.png

3、环境变量

export定义环境变量

比如:shell_eg.sh中的内容为

e685d26ebeb4

10.png

当前bash中ccc变量不存在,执行 shell_eg.sh

返回

chmod +x shell_eg.sh

./shell_eg.sh

返回 # ccc变量不存在,返回空

e685d26ebeb4

11.png

在当前bash中定义ccc变量,再次执行shell_eg.sh

ccc=1010

./shell_eg.sh

返回 # ccc变量的值依旧返回空,因为可执行文件会开启一个子bash,可执行文件不像管道一样【子bash会继承父bash中的变量】,ccc=1010是当前bash的,而 shell_eg.sh在另一个bash中执行,所以返回空。

e685d26ebeb4

12.png

如果将ccc定义为环境变量,再执行 shell_eg.sh

export ccc

./shell_eg.sh

返回 # 子bash能够读到父bash中的环境变量ccc

e685d26ebeb4

13.png

注:如果重新开启一个窗口【开启一个新的bash】,在这个新的bash中无法读到ccc变量,export不能跨bash读,只能在父bash和它的子bash中读取到

4、特殊变量

$#:位置参数个数

$*:参数列表,双引号引用为一个字符串

$@:参数列表,双引号引用为单独的字符串

$$:当前shell的进程号

$BASHPID:真实的进程号【管道中使用的时候】

$?:上一个命令退出状态【0成功;非0失败】

比如,将shell_eg.sh修改为

e685d26ebeb4

14.png

执行shell_eg.sh

返回

e685d26ebeb4

15.png

$#返回14个参数值,$*和$@都返回了参数列表。

执行完shell_eg.sh,查看$?

返回 # 如果$?返回0,表名上一个命令执行成功,返回非0的结果,

表明上一个命令没有执行成功

e685d26ebeb4

16.png

另外还有这种写法

echo ${abc[*]}或者echo ${abc[@]}

返回变量abc的参数列表

e685d26ebeb4

17.png

5、局部变量

如函数里面的变量,定义局部变量local 变量名

比如:

函数可以引用在当前bash定义的变量

e685d26ebeb4

18.png

在函数内可以定义局部变量,函数内可以输出这个变量,函数外就得不到这个变量了

e685d26ebeb4

19.png

在函数内定义的变量【非局部变量】,在函数外也可以得到

e685d26ebeb4

20.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值