shell脚本
一、相关概念
1.shell:终端中的命令(人机交互)类似于windows中的批处理文件(*.bat)
2.shell的版本(/etc/shells)
3.shell命令的基本格式
提示符 命令 参数 操作数(ls -l /etc)
特殊格式:
多条命令同时执行:命令1;命令2;...
ls -l /bin bash;pwd
输入输出重定向:
[stdin (<):默认从键盘输入 编号:0
(eg:cat | cat <&0 | cat </php/a.c)
stdout (> >>):默认从显示器输出 编号:1
>:覆盖原文件的内容
>>:在原文件基础上进行数据的追加
stderr: 编号:2
/dev/null:相当于windows的回收站
]
管道:
格式:命令1|命令2|命令3|....
后面命令的输入是前面命令产生的输出结果
4.shell脚本的运行、切换及退出
linux下的命令的执行:在bin、sbin下的命令直接输入命令的名称即可
linux下的应用程序怎么执行?
直接输入可执行程序的绝对路径 /home/***/a
进入应用程序所在文件夹 直接输入: ./a
运行的的如果为shell脚本:sh shell脚本的文件的绝对路径或相对路径
退出:exit退出到上一级的shell
补充进程树(pstree):父进程
-----子进程
----子进程
5.echo的使用
echo 常量或变量
echo $var
var="hello"
echo hello|"hello"|'hello'
echo $var|"$var"|'$var'
echo `命令`
6、shell中的变量
系统变量:env
普通变量:根据作用域的不同分为全局变量和局部变量
局部变量的作用域当前的shell
局部变量---->全局变量(各层的shell中都有效):在声明变量的基础上用export var来将变量声明为全局变量。
Echo $var和echo ${var}
变量的字符串操作
Shell中数值的计算
将数值及公式赋值给变量需要在赋值表达式外加((var=1+2+3+4+5)),否则将数值或公式当作字符串处理
7.read的使用
Read var1 var2 var3…
(1) 输入的值的数量等于变量的个数
(2) 输入的值的数量大于变量的个数
(3) 输入的值的数量小于变量的个数
8.特殊变量
系统预置的变量(环境变量):env
$?:测试前一步操作是否成功,成功返回0否则返回1
利用sh命令可以进行变量的声明
$#:代表利用sh进行输入的变量值的个数
$*:列出所有变量的值
$1、$2…$9:代表前9个变量的值
访问$9以后的值需要进行移位:shift n:n为整数,表示变量值向左移动的位数
10.流程控制
If case while for
条件格式:
Test或[ ]([[ ]])来进行测试
Test 条件表达式
逻辑运算符:
!非:
逻辑运算符的“短路现象”:本质0&&*都为0,所以*就不再执行
1||*都为1,所以*不再执行
Eg:test 1 -lt 2 && echo true || echo false (测试表达式的真假)
比较运算符:-eq、-ne、-gt、-ge、-lt、-le 注意:表达式中如果存在变量的话,变量前加$
如果用关系符号表示的话:((关系表达式)),注意:表达式中如果存在变量的话,变量前不加$
注意:str1 = str2(等号前后都存在空格)
条件格式2:[ 条件 ]======test 条件
条件格式3:[[ 条件 ]]=======用正则表达式的情况进行字符匹配
条件格式if语句
if 测试表达式 if 测试表达式;then 语句1;语句2;..; fi (写在同一行需要加;)
then 语句1
语句2
…
Fi
Case语句
在if.sh的基础上进行更改,当文件名不存在时提示用户重新输入,直到用户输入正确为止。或输入q退出