Shell脚本入门(三) - 变量
2014-10-18 16:41
381 查看
输出简单的Hello Shell之后,我们接着学习下变量的使用
命名规范:
首个字符必须为字母(a-z,A-Z)
任何变量都只能由字母(包括大小写)、数字和下划线组成
变量中不能有空格
不能使用bash里的关键字(可用help命令查看保留关键字)
示例:
我们使用declare来声明一个变量
声明完之后就可以初始化了
这里发现,网上的资料有直接进行初始化,不声明的
经过实践,也是可以的。
这里有个地方要注意下:变量名和等号之间不能有空格 (练习时就与到了这个错误!!!)
据说这是一种好的编程习惯
常用的应该就到这里了,下面分享下关于变量的其他一些知识(摘自:http://see.xidian.edu.cn/cpp/view/6999.html)
示例:
运行时,提示:
![](https://img-blog.csdn.net/20141020085144656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVndWl5YW5nMTk5MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
变量被删除后不能再次使用;unset 命令不能删除只读变量。
示例:
由于y_id 是只读变量,所以不会被删除
y_name被删除后,输出为空
结果:
![](https://img-blog.csdn.net/20141020091924611?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVndWl5YW5nMTk5MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
$num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数
$#:传入脚本的参数的个数
$*:所有的位置参数(作为单个字符串)
$@:所有的位置参数(每个都作为独立的字符串)。
$?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则$?的值为0,否则为其他非零值,常用做if语句条件
$$:当前shell进程的pid
$!:后台运行的最后一个进程的pid
$-:显示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使用的当前选项
$_:之前命令的最后一个参数
相关文章推荐
- 脚本入门:shell变量和条件测试
- Shell初学者的入门知识-变量
- jsp Servlet基础入门学习篇 十二、脚本元素、指令和预定义变量
- Linux脚本(shell)编程(一) 简单入门HelloWorld
- shell脚本中判断变量文件目录:权限、是否存在、空值、相等
- 判断变量类型的shell脚本
- Shell初学者的入门知识-变量
- crontab启动shell脚本的环境变量问题
- [转]Awk基础入门之三:shell & awk 变量传递
- shell脚本中使用了管道符,导致变量赋值丢失的原因
- Shell脚本学习笔记(二)--变量
- Shell向Perl脚本中传递变量的方法
- Shell脚本学习指南-入门
- shell脚本读取变量方法
- 让shell脚本中的正则表达式调用变量
- Linux: shell 脚本入门
- 一个比较好的shell脚本编程入门文章
- Shell中脚本变量和函数变量的作用域
- Linux bash shell脚本语法入门(转)
- Linux bash shell脚本语法入门