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
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
相关文章推荐
- shell
- Linux命令行在su root后突然变成bash-4.1$的办法
- linux shell用法(2)-- 日期显示(1)
- vc 使用ShellExecut来启动控制面板中功能模块的操作
- shell 文件分类
- shell脚本编程:条件判断if语句使用小结
- SQL Server如何启用xp_cmdshell组件
- shell - 4
- shell技巧(不断整理)
- bash FAQ
- read name 和 read 在 Bash 中的区别
- HBase Shell 操作命令&&使用Sqoop将数据导入HBase
- 一句shell命令搞定代码行数统计
- 如何通过PowerShell将一个Site Collection从Default Web Application中转移到另一个Web Application中?
- 带GUI界面的重置域账号密码PowerShell脚本
- shell常识总结
- 如何通过PowerShell将一个Site Collection从Default Content Database中转移到其他的Content Database中?
- MFC接收外部程序执行的shellexecute中传递的参数来执行不同操作
- shell date命令使用
- shell 判断文件是否存在