linux下shell编程笔记(一)

来源:互联网 发布:怎样开启摄像头数据 编辑:程序博客网 时间:2024/05/22 05:01

Shell解释功能常有两种:

1.      单条命令 -----交互式的

2.      Shell脚本------

3.       

Shell程序

第一章:

变量:大小写敏感,本地变量,环境变量

第一个变量:a=10--------------局部变量,echo $a打印变量

本地变量不能被继承,全局变量可以被继承-------------shell脚本中不能打印局部变量

全局变量 export  a------------声明全局变量

显示变量的值:echo $a  或者 echo  $(a)------------区分$AB 和$A

Set----------------------------显示所有的变量

Env------------------------------显示所有的变量(只是显示所有的环境变量)

Export m2=100等价于:m2=100;export m2;

 

只读变量:readonly  aa=200------这个只能访问,不能重心赋值,也不能清除,非只读变量可以清除

 

位置参量(命令行参数)

$0---------表示当前脚本名称

$1---------表示第一个位置参量

........

${10}----------------表示第十个位置参量

类似的有${11}....

$#---------------表示位置参量的总数

$*------------------以单个参数显示所有的位置参量

 

Echo  j=------------------单引号内容原样打出

----------------------------双引号内容表示一个参量

$!----------------------------最后一个进程在后台运行的进程号

$?----------------------------前一个命令的推出状态

 

数组:

定义:arr=(enlish  china  compane)

引用:echo  ${arr[i]}

数组元素的个数: echo ${#arr[*]}

 

 

第二章:

 

输入输出

Read var--------输入一行赋值给var变量

Read –aarr------------------赋值一个数组(空格间隔)

Read  -p ”input :” –t 10 –a  arr--------“-p”提示信息,-t超时返回

Echo--------------输出

Echo hell0

Echo $a------------------输出变量a的值

Echo ${a}b-------------在输出变量a后连接b字符

Echo –n “hello”-------在字符串中不加\n

Echo  -e  “\t”-----------将\t交给echo来解析表四tab建

 

Echo输出颜色雨光标的定位:

           \33[30m--\33[37m---------------设置前景色,即字体的颜色

           \33[40m--\33[47m----------------设置背景色

           \33[y;x--------------------------------设置光标位置

\33[0m------------------------------------------还原所有的设置

 

实例子:

Echo –e “\33[31tjjjgjjg”------------------

 

 

第三章:

单引号,双引号的区别

单引号----------------忽略所有的特殊字符

双引号-----------------忽略部分的特殊字符,但是不能忽略单引号还有$等.....

反引号------------------波浪建,命令替换----------------也可以用$()命令替换

Basename-------------求路径里最后一个的名称

Dirname----------------

多层的反引号需要用转义字符“\”

 

算术运算符(跟c语言是一模一样的):

           算术的扩展:$[]

N=10     

$[$N+1] 等于11

 

$(())----和$[]等价

(())-----------------((n+=1))--------------这个不能作为表达式

T=((n+1))-------------------错吴

Expr 1 +2-----------------可以,也可以作为左值将其赋值给变量

R =‘Exp 4 \* 5 ’-----------------将20赋值给R

Let “n=n+1”----------------------------

 

第四章:

备注:空格这里非常重要,少了可能就是语法错误

条件测试

           命令成功或失败,表达式为真或假-------真用0,假用非0

Test---------------shell内置命令

Test $x –gt $y------------------判断x是否大于y--------[  $x –gt  $y  ]-------这种一定要有空格

Name=tom

[[  $name = [tT]?? ]]----------------------支持通配符的匹配

[  -z $str ]---------------------------------测试一个字符串是否为空,空为真(0)

[  -n $str ]--------------------------------测试一个字符串为非空串,非空为真(0)

[ $str1 = $$str2]-------------------------测试两个字符串是否相等,相等为真(0)

[  $x –eq 1 ] ----------------------------测试是否相等,等为真(0)

Let “$x == 1”--------测试是否相等,等为真(0)

Let和双圆括号可以使用“== >=<= !=”等这些算术操作符,而中括号是不可以的

 

逻辑测试:

-a  与

-o  或

!  非

例子:

X=1;name=tom

$x  -eq 1 –a –n $name]---两个表达式相与

 

检测字符串为空串:

           [ “$name” = “”]

           [ ! “$name”]

           [ “x${name}” = “x”]

-----------------------空返回真(0)

 

文件测试:

[  -f a  ]----------------检测文件是否存在,存在返回为真(0)

[  ]

 

 

第五章:

If语句:

语法结构:

If  expr1

Then

Elif expr2

.....

Else

Command

Fi

 

Case分支语句:

Case expr in

Pattern1

Command

;;

Pattern2

Command

;;

......

*

Command

;;

 

esac

 

pattern可以含有通配符

 

 

第六章:

循环语句:

For variable in list

Do

Command

Done

 

Eg:

For i in 1 2 3 4 5

Do

Echo $si

Done

 

位置参量使用:

For i in $*

For i in  $*

For i in $@------双引号对其不起作用

For i in $@

 

For f in *------------------统计当前目录的文件个数

 

For的另外一种方式:

For((e1;e2:e3))

Do

command

done

 

while循环表达式:

while epr

do

           command

done

 

 

until expr--------------------条件为假(非0)执行循环

do

 

done

   

 

break [n]---------------跳出n重循环

continue [n]---------------t跳出n次循环

 

select循环与菜单:

select varible in list

do

       command

done

PS3=FAVERATOR PET------友好的提示信息

 

原创粉丝点击