Shell基础

一.变量

1.系统变量  例:$PATH  $USER

2.自定义变量

  例:A=100                     定义局部变量

        echo "A=$A"            打印变量

        unset A                   撤回变量

3.静态变量 不能unset

  例:readonly A=100

4.位置参数变量

 例:./*.sh   100  200

       $n   $0:./*.sh  $1:100 $2:200  十以上但参数需要大括号包含如:$(10)

       $*   所有参数当作一个整体

       $@  参数区分对待

       $#   所有参数的个数

5.预定义变量

   $$  当前的进程号PID

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

   $?  最后一次执行命令的返回状态 如果是0则正确执行 否则不正确

规则

 1)变量名可以由字母,数字或者下划线组成,但不能以数字开头

 2)等号两侧不能由空格

 3)变量名称习惯大写

结果返回:

 例:RESULT=`ls -l /home`     反引号

       RESULT=$(ls -l /home)

二.设置环境变量(/etc/profile)

 1)export 变量名=变量值    将shell变量输出为环境变量

 2)source 配置文件           让配置文件立即生效

 3)echo $变量名               查看环境变量

三.注释

单行注释: #

多行注释::<<!  内容   !

四.运算符

1)"$((运算式))" 或 "$[运算式]"

2)expr m + n   (+,-\*,/,%  加减乘除取余) expr运算符间有空格

五.流程控制

1.条件

 语法: 

   if [ condition ]

       then

      程序

       elif [ conditon ]

       then

      程序

   fi

非空返回 true  可以使用$?验证(0:true  >1:false)(condition前后有空格)

 判断条件:

   1)整数比较

     =  字符串比较

      -lt   小于

    -le  小于等于

    -eq  等于

    -gt  大于

    -ge  大于等于

    -ne   不等于

  2)文件权限判断

    -r   读权限

    -w  写权限

    -x   执行权限

  3)文件类型判断

    -f  文件存在且是常规文件

    -e  文件存在

    -d  文件存在并是一个目录

 例:

 

 1 #!/bin/bash
 2 
 3 if [ "ok" = "ok" ]
 4 
 5 then
 6 
 7   echo "true"
 8 
 9 fi
10 
11 if [ -e "/home/*.txt" ]
12 
13 then
14 
15   echo "true"
16 
17 fi

2.Case

  语法: 

  case $变量名 in

    "值1")

      程序1

         ;;  

    "值2")

      程序2

         ;;

    *)

      以上都不是执行

         ;;

  esac

3.for循环

 语法:

  for 变量 in 值1 值2 ....

    do

      程序

  done

  

  for ((i=1;i<=100;i++))

    do

      程序

  done

 例:

 1 #!/bin/bash
 2 
 3 for i in "$*"
 4 do
 5     echo "$i"
 6 done
 7 
 8 for j in "$@"
 9 do
10     echo "$j"
11 done

 

4.while循环 

 语法:

  while [ condition ]

  do

    程序

  done

5.read 读取控制台输入

 语法:

  read【选项】【参数】

  选项:

    -p:读取值时提示符

    -t:读取值等待时间秒,如果没 则不等待

  参数:指定读取值读变量名

 例:

1 #!/bin/bash
2 
3 read -t 10 -p "请输入一个数字:" NUM
4 echo "你输入的数字是:$NUM"

  

六.函数

  常用函数:

  1)获取路径的最后文件名

    basename  /home/*.txt  =>   *.txt

    basename  /home/*.txt  .txt =>   *

  2)获取路径除文件名的路径

    dirname /home/aaa/*.txt  =>   /home/aaa

 自定义函数:

  [ function ] function[()]

  {

    Action;

    [return int;]

  }   

  例:

#!/bin/bash

#定义函数
function getSum(){
  SUM=$[$n1+$n2]      
  echo "和等于:$SUM"  
}

read -p "请输入第一个数:" n1
read -p "请输入第二个数:" n2

#调用函数
getSum $n1 $n2

 

  

七.定时任务

 例:完成数据库的定时备份

 1 #!/bin/bash
 2 
 3 #备份的路径
 4 BACKUP=/data/backup/db
 5 
 6 #当前时间作为文件名
 7 DATETIME=$(date +%Y_%m_%d_%H%M%S)
 8 
 9 echo "=======备份开始========"
10 echo "=======$DATETIME.tar.gz========="
11 
12 #主机
13 HOST=localhost
14 #用户名
15 DB_USER=root
16 #密码
17 DB_PWD=123456
18 #备份数据库名
19 DATABASE=test
20 #创建备份路径
21 [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
22 #执行mysql备份数据库指令
23 mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
24 
25 #打包
26 cd $BACKUP
27 tar -zcvf  $DATETIME.tar.gz  $DATETIME
28 
29 #删除10天前备份文件
30 find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
31 
32 echo "=========备份成功========="

创建定时器  2点执行

crontab -e

* 2 * * *  sh路径

  

 

posted on 2020-10-06 21:37  怂人不倦  阅读(100)  评论(0编辑  收藏  举报