shell笔记(一):变量

变量

shell变量命名规则和和大部分编程语言都一样:

  1. 变量名有数字、字母、下划线组成;
  2. 必须以字母或下划线开头,不能以数字开头;
  3. 不能使用shell所保留的关键字(通过help命令可以查看保留的关键字)

注意,赋值号“=”的周围不能有空格。

定义并使用变量

设置变量“name”:name=“张王李赵”

使用echo输出:echo $name

注意如果拼接字符串

  • 单引号:echo ‘你好$name’  结果是:你好$name
  • 双引号:echo “你好$name” 结果是:你好张王李赵

以单引号' '包围变量的值时,单引号里面是什么就输出什么(适合纯文本)

以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。

建议:变量使用是用{}包起来,可以读性提高,并准确解释变量,如下:

skil="java"

echo "I am good at $skillScript" 

解释器就会把 $skillScript 当成一个变量(其值为空)。结果为:I am good at

echo "I am good at ${skill}Script"

就可以准确的执行。结果为:I am good at javaScript

设置只读变量(readonly)

readonly skil

设置过以后再变更skil的值会报错,但可以正常使用

删除变量(unset)

unset skil

变量被删除后不能再次使用;unset 命令不能删除只读变量

变量作用域(分为三种)

  • 在当前 Shell 会话中使用,这叫做全局变量(global variable)默认
  • 在函数内部使用,这叫做局部变量(local variable);
  • 在其它 Shell 中也使用,这叫做环境变量(environment variable)。

全局变量演示(global variable)

定义a.sh 文件

#!/bin/bash
echo $a
b=200

定义 b.sh文件

#!/bin/bash
echo $b

执行


打开一个 Shell 窗口,输入以下命令:
将a设置为99,执行a.sh和b.sh,结果如下

$ a=99
$ . ./a.sh
99
$ . b.sh
200
$

a.sh显示a的值:99;设置b的值为200

b.sh显示b的值:200

可以发现,在 Shell 会话中以命令行的形式定义的变量 a,在 a.sh 中有效;在 a.sh 中定义的变量 b,在 b.sh 中也有效。因此全局变量的作用范围是当前的 Shell 会话

局部变量(local variable)
 

[root@centos shell]# function fun1(){
> local a=1
> b=2
> echo "fun1(a):${a}"
> echo "fun1(b):${b}"
> }
[root@centos shell]# fun1
fun1(a):1
fun1(b):2
[root@centos shell]# echo ${a}

[root@centos shell]# echo ${b}
2

 如上图:在fun1函数里定义一个全局变量b=2,局部变量a=1,并打印

调用fun1函数是a、b均可打印

直接调用a和b时,只有b(全局可正常打印)正常打印,a打印为空
局部变量值限于定义范围,如上,在fun1函数定义,就只有fun1函数可以使用

环境变量(environment variable)
 

[root@centos shell]# a=100
[root@centos shell]# echo ${a}
100
[root@centos shell]# bash
[root@centos shell]# echo ${a}

[root@centos shell]# exit
exit
[root@centos shell]# export a
[root@centos shell]# echo ${a}
100
[root@centos shell]# bash
[root@centos shell]# echo ${a}
100

export:将变量导出为环境变量;bash:是进入子shell;exit推放回上一级的shell;

如上脚本:设置过a以后打印正常,进入子shell后,打印为空(非环境变量),退出到父shell后将a导出为环境变量,在进入子shell,打印a,可以正常打印

如果想在定义的同时导出为环境变量,可以写作export a=200

注意,环境变量只能向下传递而不能向上传递,即“传子不传父”。


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值