shell 里的变量 总结
2014-02-12 22:31
211 查看
对于linux shell的使用者来说, 巧妙的应用变量不仅能够快速的解决问题,同时能够获取非常大的乐趣,因为shell的变量内部可以附加一些运算,使得程序非常简洁明了并且功能强大,以下详细介绍一下:
1.基本变量:
变量的命名:以字符,数字,下划线的组合命名的,比如 x,x1,x_1
变量的赋值:a) x=1(赋数值,注意,不要给x赋值浮点数,x=1也并非真的是将数值1赋给x,x的值需要上下文推测,shell并非用来做数值运算的,此外x=为赋空值);
b) x="hello world"(字符串);
c) x=$y (将变量y的值提取出来付给x,注意当变量后有字符串跟随时,要用花括号,比如y="hello",那么x=${y}world的值为helloworld);
d) x=$((1+2))(算数表达式的值,x值为3);
e) x=$[1+2](相当于d);
f) x=$(ls -lt)(把命令产生的输出赋值给x);
g) x=`ls -lt`(相当于f);
h) x=${y#/*/}(比如y="/home/hello/world/hello.world.txt,那么x的值就是hello/world/hello.world.txt,${varname#pattern}(leftmost));
i) x=${y##/*/}(y同上,那么x的值为hello.world.txt,${varname#pattern}(rightmost);
j) x=${y%.*?}(y同上,那么x的值为/home/hello/world/hello.world,%与#的作用方向正好相反,#左%右);
k) x=${y%%.*}(y同上,x的值为/home/hello/world/hello,%%与##的作用方向相反);
l) x=${y:-word}(假设y存在且不为null,那么x=$y,否则x=word);
m)x=${y:+word}(假设y存在且不为null,那么x=word,否则x=);
n) x=${y:=word}(假设y存在且不为null,那么x=$y,否则y=word,x=word);
o) x=${y:?message}(假设y存在且不为null,那么x=$y,否则输出y:message);
p) x=${#y}(返回$y的字符串长度,POSIX标准);
2.特殊变量:
2a.环境变量:比如 $PATH、$HOME、$ENV
2b.内置变量:
1) $#:命令行参数总数
2) $*,$@:所有命令行参数,区别是$*将所有命令行参数视为单个字符串"$1,$2,...",而$@将所有命令行参数视为独立字符串"$1","$2",...
3) $?:程序的退出状态
4) $$:shell的进程编号
5) $0:shell的程序名称
3.bash扩展的数组:
x=($x1,$x2,$x3), 那么x就是一个包含3个元素的向量了,取第i个元素的方法是${x[i]},另外,${x}意思是取第0个元素${x[0]},取出整个向量要用${x[@]}或者${x[*]},向量的长度为${#x[*]}
通过以上的总结,我们可以看到shell对变量的处理非常的灵活,能够巧妙运用这些变量的使用方法可以减少代码的长度,使得代码更加简洁高效
1.基本变量:
变量的命名:以字符,数字,下划线的组合命名的,比如 x,x1,x_1
变量的赋值:a) x=1(赋数值,注意,不要给x赋值浮点数,x=1也并非真的是将数值1赋给x,x的值需要上下文推测,shell并非用来做数值运算的,此外x=为赋空值);
b) x="hello world"(字符串);
c) x=$y (将变量y的值提取出来付给x,注意当变量后有字符串跟随时,要用花括号,比如y="hello",那么x=${y}world的值为helloworld);
d) x=$((1+2))(算数表达式的值,x值为3);
e) x=$[1+2](相当于d);
f) x=$(ls -lt)(把命令产生的输出赋值给x);
g) x=`ls -lt`(相当于f);
h) x=${y#/*/}(比如y="/home/hello/world/hello.world.txt,那么x的值就是hello/world/hello.world.txt,${varname#pattern}(leftmost));
i) x=${y##/*/}(y同上,那么x的值为hello.world.txt,${varname#pattern}(rightmost);
j) x=${y%.*?}(y同上,那么x的值为/home/hello/world/hello.world,%与#的作用方向正好相反,#左%右);
k) x=${y%%.*}(y同上,x的值为/home/hello/world/hello,%%与##的作用方向相反);
l) x=${y:-word}(假设y存在且不为null,那么x=$y,否则x=word);
m)x=${y:+word}(假设y存在且不为null,那么x=word,否则x=);
n) x=${y:=word}(假设y存在且不为null,那么x=$y,否则y=word,x=word);
o) x=${y:?message}(假设y存在且不为null,那么x=$y,否则输出y:message);
p) x=${#y}(返回$y的字符串长度,POSIX标准);
2.特殊变量:
2a.环境变量:比如 $PATH、$HOME、$ENV
2b.内置变量:
1) $#:命令行参数总数
2) $*,$@:所有命令行参数,区别是$*将所有命令行参数视为单个字符串"$1,$2,...",而$@将所有命令行参数视为独立字符串"$1","$2",...
3) $?:程序的退出状态
4) $$:shell的进程编号
5) $0:shell的程序名称
3.bash扩展的数组:
x=($x1,$x2,$x3), 那么x就是一个包含3个元素的向量了,取第i个元素的方法是${x[i]},另外,${x}意思是取第0个元素${x[0]},取出整个向量要用${x[@]}或者${x[*]},向量的长度为${#x[*]}
通过以上的总结,我们可以看到shell对变量的处理非常的灵活,能够巧妙运用这些变量的使用方法可以减少代码的长度,使得代码更加简洁高效
相关文章推荐
- shell变量计算长度及加减运算方法总结
- 总结linux环境几个特殊的shell变量
- Shell编程之Shell变量学习总结
- shell变量的一点总结
- Bash Shell:变量总结
- Linux基础知识之————shell学习总结之变量引用
- Shell编程之Shell变量学习总结
- Shell编程之Shell变量学习总结
- Shell全局变量、局部变量与特殊变量笔记总结
- shell变量关系条件测试总结
- linux总结(2)——环境变量与shell
- shell给多个变量赋值的方法总结
- shell中的fork、source和exec总结(包括环境变量)
- shell中的fork、source和exec总结(包括环境变量)
- shell 总结之特殊变量:位置变量 $1 ,$* ,$?
- linux 中的局部变量、全局变量、shell 变量的总结
- shell中的fork、source和exec总结(包括环境变量)
- shell总结:进程、环境变量、文件权限
- linux 中的局部变量、全局变量、shell 变量的总结