Shell脚本入门(三) - 变量

来源:互联网 发布:淘宝泄露买家信息 编辑:程序博客网 时间:2024/05/21 06:59

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

1. 变量的声明和定义

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

命名规范:

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

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

变量中不能有空格

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

示例:

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

declare y_describe y_pricey_describe="haha"y_price=34.89

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

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

y_name="yuguiyang"y_age=24

经过实践,也是可以的。

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

2. 变量的使用

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

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

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

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


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

3. 只读变量

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

示例:

#!/bin/bashdeclare y_id=1990readonly y_idecho "y_id:${y_id}"y_id=2014echo "y_id:${y_id}"
这里,我们尝试修改只读变量y_id

运行时,提示:


4. 删除变量

使用 unset 命令可以删除变量

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

示例:

#!/bin/bashdeclare y_id y_namey_id=1990y_name="yuguiyang"echo "y_id:${y_id}"echo "y_name:${y_name}"readonly y_idunset y_idunset y_nameecho "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使用的当前选项

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打完狂犬疫苗后我抽了很多烟怎么办 我老婆接受了我的小三现在该怎么办 今日头条我发的文章浏览量少怎么办 如果荷兰猪母的和公的打架该怎么办 我买的商铺地址被别人注册了怎么办 搜狗阅读购买搜豆没有到账该怎么办 捡的ⅴⅰⅴo指纹屏锁解不开怎么办 在百度上订的演出票不配送了怎么办 我在租车公司租的车撞报废了怎么办 交给学校查重的论文发错了怎么办啊 顺丰快递员把我的快递弄丢了怎么办 苹果6换了电池触屏不好用了怎么办 律协以律所被投诉不批准实习怎么办 提车时间没有写4s不给车怎么办 全店的人都知道我坐过牢怎么办 找了一个长得帅玩心重的老公怎么办 汽车左后轮油封漏油换了也漏怎么办 星露谷物语不小心把任务删了怎么办 饿了么商家版账号和密码忘了怎么办 红米4x手机里的照片全删了怎么办 微信表情包里编辑软文的数字怎么办 在转转上卖东西下单了想取消怎么办 丈夫的前儿子偷了我的钱我该怎么办 从日本寄的邮包被海关扣下了怎么办 卖家要求退货寄过去的货坏了怎么办 寄快递发货单丢了货发出去了怎么办 酷派手机电源键坏了开不了机怎么办 红米4a进水后开机就黑屏了怎么办 红米1s进水后开机了黑屏了怎么办 魅族手机已锁定魅族账号忘了怎么办 魅族5糸统升级后开不了机了怎么办 如果别人用电脑登了你的微信怎么办 消逝的光芒买错了买的普通版怎么办 在人人车卖了个车买家不过户怎么办 应用锁密码和密保问题都忘了怎么办 不小心在微信公众号发了消息怎么办 微信漂流瓶不能用了被投诉了怎么办 货物少了拉货的不承认少了怎么办 寄的快递号码留错了已经寄走怎么办 网购快递放在单位门卫室丢了怎么办 顺丰生鲜速配时效内食物坏了怎么办