在shell脚本中,if必须有结束标志,即反写fi
赋值时等号两边不能有空格 var=11;
数值运算:
1、expr数值运算 [root@localhost ~]# aa=11
[root@localhost ~]# bb=22
给变量aa和变量bb赋值
[root@localhost ~]# dd=(expr(expraa + $bb)
注意:使用expr时,运算符两侧需要有空格,为通配,在做乘法时,需要对进行转义*, 反引运行引号里面的语句
2、“((运算式))”或“((运算式))”或“[运算式]”
当不注意优先级时,使用括号控制一下
运行方式差异(source, sh script, ./script)
read –p “please input your first name:” firstName (注意空格)
read 读一个内容,赋给firstname ,双引号的内容原样打出来作为提示信息
①使用sh filename.sh时
脚本执行时的变量的生命周期仅仅从脚本开始到脚本结束,脚本执行前和执行后,变量均无值。
原因:父程序执行到脚本时,转而执行脚本(子程序),子程序执行完再转而执行主程序,所以变量的生命周期仅仅是从脚本开始到结束。
②使用source filename.sh
变量的生命周期是全局的,即,父程序执行到shell时,不会转到子程序执行,它会把子程序的内容转到主程序执行,在主程序完成shell的内容,即变量是全局有效的
变量表达式:
1.条件判断 test test n1 -参数 n2(或 –参数 表达式) 真返回0,假返回1。
①整数比较运算符 -lt 小于 -le 小于等于 -gt 大于 -ge 大于等于
-eq 等于 -ne 不等于
例:test 1 –lt 4 #判断1<4 ; echo $? #结果为0
•test语句的等价形式[ 1 –lt 4 ] #可以用[]代替test实现判断
注意:表达式与中括号间有空格
产生序列:seq
seq命令:产生1-9的数字序列 比如 seq 1 4
if分支 :
If then 的使用:如果then和if在同一行,在if表达式的后面要加;
Case 每条分支后面使用;;(两个;)结束,最后反写case结束case的循环
For 后面是do 和 done
在循环里面嵌套循环时 ,使用break2 可以跳两层循环
函数:
函数由两部分组成: 函数标题 函数体
函数名(){命令…..}
在脚本中使用函数时,函数必须在脚本之前
所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。
数组:定义
1.array_var = (1 2 3 4 5 6)
2. array_var[0]=”test1” array_var[1]=”test2”
关联数组:索引可以是任何东西,最经典的是字符串
关联数组使用前要声明一下:declare -A phone