全部博文(471)
分类: Python/Ruby
2013-02-21 19:56:43
一、变量
变量:C也是 从变量开始学起。shell编程也从变量学起。
变量三个方面:1、数据类型 2、生存期 3、作用域
1.1 数据类型:变量依据你赋值的类型
C与Shell对比:
C: int a="abcd";(错误)
Shell:
a="abcdef"a就是字符串类型
b=3 b就是整型
在默认条件下,所有变量都被看作字符串并以字符串来存储
1.2 变量
从变量的生存期和作用域角度划分一般使用到得变量有三种。
1.本地变量
在用户现在的shell生命期的脚本中使用,如果shell启动另一个进程或退出,此值失效。
=两边千万不要有空格
有5种常用的使用方法:
1.变量赋值
a="abcd"
2.显示变量
echo $a
3.清除变量
unset a
4.显示所有本地shell
set
5.只读变量
name="abc"; readonly name
2.环境变量
登录进程为父进程,shell中执行的用户进程为子进程。环境变量可用于所有子进程。环境变量最好在profile文件中定义。习惯上,所有环境变量均应该大写。
有5种常用的使用方法:
1.变量赋值
abc="abc";export abc
2.显示环境变量
echo $abc
3.显示所有环境变量
env
4.清除环境变量
unset abc
5.常用环境变量
HOME PATH PWD USER
3.位置变量
这个特别适合于执行命令时,传递参数。
1.位置变量一般用$0--$9
例如:service httpd start
$0表示:service
$1表示:httpd
$2表示:start
2.$#表示参数的总个数
使用变量时注意事项:
在使用C编程的时候,在使用变量时,如果变量没有被赋值就使用则会出现问题。Shell有专门的检测变量是否被设置的方法:
测试变量是否已经设置
1.${var:-value}:
如果变量var未定义,返回一个默认值如果var存在且非空,则表达式${var:-value}的值为$var,如果var未定义,则表达式值${var:-value}为value.
name1="dong";name2=${name1:-no name};echo $name1 $name2
unset name1; name2=${name1:-no name};echo $name1 $name2
2.${var:=value}:
如果var未定义,设置var的默认值为value
如果var存在且非空,则${var:=value}的值为$var;如果var为空或未定义,则var被赋值value且表达式值为value。
3.${var:?mesg}
捕获未定义变量导致的错误。
如果var存在且非空,则${var:?value}的值为$var;如果var为空或未定义,则打印mesg并终止脚本。
4.${var:+mesg}:
测试一个变量的存在性
如果var存在且非空,则${var:+mesg}的返回值为mesg;如果var为空或未定义,则返回null