对于linux shell的使用者来讲, 巧妙的应用变量不只可以快速的解决问题,同时可以获取很是大的乐趣,由于shell的变量内部能够附加一些运算,使得程序很是简洁明了而且功能强大,如下详细介绍一下:linux
1.基本变量:shell
变量的命名:以字符,数字,下划线的组合命名的,好比 x,x1,x_1数组
变量的赋值:a) x=1(赋数值,注意,不要给x赋值浮点数,x=1也并不是真的是将数值1赋给x,x的值须要上下文推测,shell并不是用来作数值运算的,此外x=为赋空值);bash
b) x="hello world"(字符串);命令行
c) x=$y (将变量y的值提取出来付给x,注意当变量后有字符串跟随时,要用花括号,好比y="hello",那么x=${y}world的值为helloworld);htm
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对变量的处理很是的灵活,可以巧妙运用这些变量的使用方法能够减小代码的长度,使得代码更加简洁高效