您的位置:首页 > 运维架构 > Shell

linux由浅入深(10.1 )-- shell中的变量

2015-10-20 07:32 337 查看
1.shell 是弱类型语言,默认情况下保存一个字符串。 因此要进行一些 数学逻辑等运算要 使用特殊符号。

2.shell 变量 按照功能可分成一下几大类

a.环境变量(系统运行后自动产生,也可以自定义,自动产生的一般和系统的运行状态密切关联,能反映或者影响系统的运行)

作用域:本次bash进程,和他的子进程

定义方式  : export 环境变量=环境变量值 (export varname=value) //注意=两边不能有空格

定义环境变量也叫导出环境变量

注意:脚本在执行时会启动一个子shell进程:
    
命令行中启动的脚本会继承当前shell的环境变量:
   
  系统自动执行的脚本(非命令行启动)就需要自我定义各个环境变量

b.本地变量:

作用域:作用于整个bash进程

定义方式:varanme = value;

引用方式 ${varname} ;

exp: ANIMAL = sheep

              
echo "There are some ${ANIMAL}s"

c.局部变量(脚步中特有,命令行中没有或者说local:
can only be used in a function):

作用域:当前代码段(本次
shell脚步结束后消失)

定义方式:local
varanme=value;

引用方式
: 同本地变量

d.位置变量(脚步中特有,命令行中没有 ):不用定义,脚步运行时默认初始化

$0:当前脚本的文件名

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

如:$1,$2,$3

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

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

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

$$:当前shell进程的pid

e.特殊变量

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

$$:当前shell进程的pid

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

$-:显示shell使用的当前选项
$_:之前命令的最后一个参数

  相同的变量不同的引用方式会得到不同的值 下表说明:



3.按照变量类型可分为:

a. 字符串 :默认前面已经提到不在赘述

b. 
 数值变量

shell中默认把变量值当作字符串,例如:
age=22
age=${age}+1
echo ${age}
输出结果为22+1,而不是23,因为shell将其解释为字符串,而不是数学运算。
可以用let命令使其进行数学运算,例如:
let age=${age}+1
也可以用declare把变量定义为整型。例如:
declare -i age=22
这里就用 -i 选项把age定义为整型的了。此后每次运算,都把age的右值识别为算术表达式或数字。

c. 数组
在shell中可以使用数组,例如:
array[0]=0
array[1]=1
array[2]=2
则array就是一个数组,也可以这样给数组初始化:
array=(0 1 2) // 元素之间以空格分隔
可以通过 ${array[$i]}来访问array中某个元素,${array[*]} 的返回值即数组的所有元素组成的串,${#array[*]} 的返回值即数组的元素个数,${arr
ay[*]:0:2} 返回第一个和第二个元素组成的串。0表示开始的位置,2表示要返回的元素个数,开始位置可以为0-2(0减去2)之类的,表示从倒数第二个元素开始。

参考:    1.马哥Linux

2.  http://www.cnblogs.com/barrychiao/archive/2012/10/22/2733210.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: