shell编程总结

1、shell是解析性语言----》给系统管理员使用  c:编译性语言

什么是shell:它是一个用户与内核的接口程序,解析用户命令告诉内核

2、shell的分类:sh   bash  ....

which cd是无法查看的,因为它是内部命令

ls:可执行文件,从环境变量的路径上找到的

3、shell脚本:

后缀:.sh  ----->  test.sh

通过约定的格式将命令组合起来,实现自动化.

如:#!/bin/bash

echo "hello"

解析器解析命令和变量(这里的变量是没有类型的)

3、1变量:

  1、自定义变量   2、环境变量   3、预定义变量    4、位置变量

1、自定义变量

  定义:myname = "123"

  引用:$myname

2、环境变量

  export PATH=$PATH:/usr/local

环境变量PS1=

3、位置变量

描述:$0 $1  --- $9

作用:用于外部传参

4、预定义变量

$#:命令行中位置参数的个数

$*:所有命令行中位置参数的值

#!/bin/bash
#echo "helloworld"
echo "helloworld"
myname="ltest tt" 
echo $myname

fruit=apple
mytree='$fruit tree'
echo $mytree

today='today is `date``
echo $today

#echo $0
#echo $1
#echo $2
#echo $#
#echo $*

 

-------------------------------------------------------------

3、特殊字符

1、引号:“” ,‘’, ``.

"":特殊字符保留自己的特性

myname = "hello"

echo "$myname is hello"

结果:hello is hello

‘’:全部当做字符串来处理

“$myname is hello”

结果:$myname is hello

``:解析命令

today = "today is `data`"

2、管道  |  将一个命令的输出作为另一个命令输入

ls -l | wc -w

3、通配符  * ? []  

*:代表任意字符

?:代表任意一个字符

[abc] :代表一个指定范围内的字符,即匹配a,b,c中任意字符

3、重定向:

>:直接清空

>>:追加

1 #!/bin/bash
2 SIZE=`du -sh /var/lib/mysql`
3 DAY=`date +%Y%m%d`
4 echo "day: $DAY" >> /tmp/dbinfo.txt
5 echo "size: $SIZE" >> /tmp/dbinfo.txt
6 cd /opt/dbbak/
7 tar czvf mybak${DAY}.tar.gz /tmp/dbinfo.txt /var/lib/mysql
8 rm /tmp/dbinfo.txt

shell的运算

ff = `expr 4 + 5`

echo $ff

或者

let a = 4+5

echo $a

-------------------------------------------------------------------

字符串的处理

var = "hello"

echo "${#var}"//统计变量var中字符串的大小....

复杂一点:sed awk

--------------------------------------------------------

条件测试操作

命令: 1.test 条件表达式
2.[ 条件表达式 ]
$? 0 ->真 非0-->假
条件表达式类型
文件状态/字符串比较/整数值比较/逻辑测试


1. 文件状态:
test 操作符 文件
2.字符串符比较
[ 字符串1 == 字符串2 ]
3.整数值比较
[ 整数1 操作符 整数2 ]
-eq
4. 逻辑测试
&& --> -a
|| ---> -o
!:
[ $b -gt 0 ] || [ &c -gt 0 ] && [ &a -gt 0 ]

1 #!/bin/bash
2 RATE=`df -hT | grep "/mnt/hgfs" | awk '{print $6}' | cut -d "%" -f 1`
3 if [ $RATE -gt 80 ]
4 then
5     echo "waing"
6     echo "eaing"
7 fi

2.6 语句
1.if
if 条件测试表达式
then
命令集
fi
-------------------------
if 条件测试表达式
then
命令集1
else
命令集2
fi
-------------------------
if 条件测试表达式1
then
命令集1
elif 条件测试表达式2
then
命令集2
elif 条件测试表达式3
then
命令集3

else
命令集4
fi

2、for

2.for
for 变量名 in 取值列表
do
命令集
done

1 #!/bin/bash
2 for TM in "moring" "noon" "evening"
3 do
4     echo $TM
5 done

3.while
while 测试表达式
do
命令集

1 #!/bin/bash
2 i=1
3 while [ $i -le 6 ]
4 do
5     echo "hello"
6     i=`expr $i + 1`
7 done

4.case
case 变量 in
值1)
命令集
;;

值2)
命令集
;;
*)
命令集
;;
esac

 1 #!/bin/bash
 2 case $1 in
 3 start)
 4     echo "start-----"
 5     ;;
 6 stop)
 7     echo "stop-----"
 8     ;;
 9 *)
10     echo "---------"
11     ;;
12 esac

2.7其它
break  //跳出循环
continue

read

#!/bin/bash
read -p "hekfe" nf  //从键盘输入,传给nf...
echo $nf

 

 

2.8函数
1。声明
function 函数名
{
命令集
}

函数名()
{
命令集
}

2.调用
函数名

1 #!/bin/bash
2 adder()
3 {
4     echo `expr $1 + $2`
5 }
6 adder 12 34
7 adder 11 22

 

posted @ 2016-05-08 21:40  高傲的monkey  阅读(424)  评论(0)    收藏  举报