Shell脚本入门(三) - 变量

输出简单的Hello Shell之后,我们接着学习下变量的使用

1. 变量的声明和定义

Shell里的变量有2种类型:字符串和数值,定义的方式其实是一样的,字符串用“”括起来

命名规范:

首个字符必须为字母(a-z,A-Z)

任何变量都只能由字母(包括大小写)、数字和下划线组成

变量中不能有空格

不能使用bash里的关键字(可用help命令查看保留关键字)

示例:

我们使用declare来声明一个变量

declare y_describe y_price
y_describe="haha"
y_price=34.89

声明完之后就可以初始化了

这里发现,网上的资料有直接进行初始化,不声明的

y_name="yuguiyang"
y_age=24

经过实践,也是可以的。

这里有个地方要注意下:变量名和等号之间不能有空格 (练习时就与到了这个错误!!!)

2. 变量的使用

使用一个定义过的变量,只要在变量名前面加美元符号($)即可

y_name="yuguiyang"
y_age=24

echo "name:$y_name"
echo "age:$y_age"
我们也可以使用 {}将变量括起来,加花括号是为了帮助解释器识别变量的边界

declare y_describe y_price
y_describe="haha"
y_price=34.89
echo "y_describe:${y_describe}"
echo "y_price:${y_price}"

据说这是一种好的编程习惯


常用的应该就到这里了,下面分享下关于变量的其他一些知识(摘自:http://see.xidian.edu.cn/cpp/view/6999.html

3. 只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变

示例:

#!/bin/bash

declare y_id=1990
readonly y_id
echo "y_id:${y_id}"

y_id=2014
echo "y_id:${y_id}"
这里,我们尝试修改只读变量y_id

运行时,提示:


4. 删除变量

使用 unset 命令可以删除变量

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

示例:

#!/bin/bash

declare y_id y_name
y_id=1990
y_name="yuguiyang"
echo "y_id:${y_id}"
echo "y_name:${y_name}"

readonly y_id

unset y_id
unset y_name
echo "y_id:${y_id}"
echo "y_name:${y_name}"

由于y_id 是只读变量,所以不会被删除

y_name被删除后,输出为空

结果:


5. 变量的作用范围

运行shell时,会同时存在三种变量:

1) 局部变量

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

2) 环境变量

所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

3) shell变量

shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行


6. 特殊变量

$0:当前脚本的文件名

$num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数

$#:传入脚本的参数的个数

$*:所有的位置参数(作为单个字符串)

$@:所有的位置参数(每个都作为独立的字符串)。

$?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件

$$:当前shell进程的pid

$!:后台运行的最后一个进程的pid

$-:显示shell使用的当前选项

$_:之前命令的最后一个参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值