逻辑控制
1. if结构:if [ condition ] ; then ...; else...; elif...; fi. ( fi做为结尾)
简单的if逻辑可以用&& ||去代替:a&&b||c; &&前面的命令执行成功为真,才会执行&&后面的命令,||前面的命令执行失败,为假,才会执行||后面的命令 , 例如:echo "1"&&echo "2"||echo "3"&&echo "4"||echo "5"||echo "6"&&echo "7"&&echo "8"||echo "9"
2.For循环:for((c1;c2;c3));do....;done
for的遍历循环:for x in ${array[@]};do...;done
3.while循环:while read line;do echo $line;done < file;(<是输入重定向;>是输出重定向;read是个读入键盘的命令)
4.退出控制:
break:退出当前循环,默认为1
break 2:退出两层循环
contiune:跳出当前循环,进入下一次循环
contiune 2: 跳出上层循环的下一次循环中
return:函数返回
exit:脚本退出
Bash运行环境
1.shell运行环境
bash是一个进程,bash下还可以再重新启动一个shell,这个shell是sub shell,原shell会复制自身给他
在sub shell 中定义的变量,会随着sub shell 的消亡而消失
()是在子sehll中运行的,()中内容执行完毕后,子shell消亡
{}是在当前shell中运行的
&&当前脚本执行的pid
&后台执行
&!运行在后台的最后一个作业的PID
jobs:查看进程状态
ctrl +z:暂停程序执行
bg 1:继续执行暂停执行的程序1
fg 1:j将暂行的后台程序放到前台继续执行
2.shell环境变量
修改profile文件(如果不能修改需要chmdo 777 profile),添加export PATH=$PATH:/home/liyuanyuan/test/....
保存退出
生效文件:source /etc/profile
set:可以获得当前所有变量
3.shell输入输出
a.read用来读取输入,并赋值给变量
b.echo, printf可以简单暑促变量
c.echo "hello to testerhome">file,将输出重定向到文件file,等价于tee. >重定向会覆盖掉原来文件的所有内容
d.echo "from liyuanyuan">>file, 表示追加, 等价于tee -a
f. <file输入重定向
g. |表示管道,也就是前一个命令传入下一个名的输入
h. grep
grep -i :忽略大小写进行匹配
grep -o:只显示匹配到的内容
grep -o "c.":显示匹配到内容后面一个字符
grep -o "c.*":显示匹配到内容后面任意字符
PS:
1.创建脚本的命令:touch hello.sh
2.搜索输入过的命令:ctrl+r
3.查看所有输入过的命令:history
4.跳转到指令的结尾:ctrl +e,跳转到指令的开头:ctrl +a
5.ctrl +c中断程序
6.read -p "enter":-p为显示提示语“enter”
7.echo *:默认打印当前目录所有文件
8.echo $$:显示当前进程号
9.ps -ef:显示所有进程的全格式
ps -e:显示全部进程