• CentOS之Shell文件编写基础


    shell文件以.sh结尾,这是一种习惯而已。第一行以#! /bin/bash开头;表示该文件使用的是bash语法;

    如果不设置该行,你的shell脚本也可以执行,但是不符合规范。#表示注释。

    # vim first.sh

    输入以下内容

    #! /bin/bash

    date

    echo "Hello world!"

    退出文件编辑

    # sh first.sh   执行脚本

    # ./first.sh   提示权限不够

    # chmod +x first.sh

    # ./first.sh   执行脚本

    # sh -x first.sh  查看shell的执行过程,方便调试

    date用法

    date  +%Y:以四位数字格式打印年分

    date +%y:二位数展示年分

    date +%m :月份

    date +%d:日期

    date +%H:小时

    date +%M:分钟

    date +%S:秒

    date +%w:星期;0表示周日。

    # date +"%Y-%m-%d %H:%M:%S"

    # date -d "-1 day" +%d  一天前的日期

    # date -d  "-1 hour" +%H  一个小时前

    # date -d  "-1 min" +%M   一分钟前

    变量

      1)变量名=变量值

      2)脚本中的反引号(键盘左上角 波浪线键)是将字符串当成shell命令执行,返回命令的执行结果。

    d=`date  +%H:%M:%S`   变量

    echo "脚本开始时间 $d."

    echo "现在休眠2秒"

    sleep 2

    d1=`date +%H:%M:%S`     变量

    echo  "脚本结束:$d1."

    数学运算

    a=1

    b=2

    sum=$[$a+$b]

    echo "$a+$b=$sum"

    和用户交互

    read -p   "请输入一个数字:" x

    read -p  "请再次输一个数字:" y

    sum=$[$x+$y]

    echo   "这个和是:$sum"

    脚本预设变量

    文件a.sh,内容如下

    sum=$[$1+$2]

    echo "sum=$sum"

    执行脚本  sh a.sh   1 2

    输出结果 sum=3

    $1和$2是shell脚本的预设变量。  $0表示脚本本身的名字。

    逻辑语句

      if

        if   判断语句;  then

           command

        fi

    编写脚本文件 a.sh

    read -p "请输入一个数字:" a

    if((a<60)); then

      echo "$a 小于60"

    fi

    退出编辑

      if else

      if  判断语句; then

        command

      else

        command

      fi

    新建a.sh,内容如下

    read -p "请输入一个数字:" a

    if((a<60)); then

      echo “小于60”

    else

      echo "大于60"

    fi

    退出脚本编辑。

     else if

    if 判断语句;then

      command

    elif 判断语句;then

      command

    else

      command

    fi

    新建sh文件a.sh,脚本如下

    read -p "请输入数字:" a

    if((a<60));then

      echo "小于60";

    elif ((a<120)) && ((a>=60)); then

      echo "小于120,但是大于60"

    else

      echo "大于120"

    fi

    判断大小除了使用(())形式外,还可以使用[ ];但是不能使用>,<,=了;

    要使用-lt(小于),-gt(大于),-le(小于等于),-ge(大于等于),-eq(等于),-ne(不等于)。

    # a=10; if [$a  -lt 5 ];then echo ok; fi

    # a=10;if [$a  -gt 5];then echo ok; fi

    # a=10; if [$a  -lt  1] || [$a  -gt  5];then echo ok;fi

    文档的判断

    格式:

    if [-参数  filename];then

      command

    fi

    参数:

      -e:判断文件或目录是否存在

      -d:判断是不是目录以及是否存在。

      -f:判断是不是普通文件以及是否存在

      -r:判断是否有读的权限

      -w:判断是否有写权限

      -x:判断是否可执行

    示例:

      if [ -d /home/];then echo ok;fi    判断home是否是目录以及是否存在。

    case 逻辑判断

    case 变量 in

    value1)

      command

      ;;

    value2)

      command

      ;;

    *)

      command

      ;;

    esac

    read -p "输入一个数字:" n

    a=$[$n%2]

    case $a in

    1)

      echo "奇数"

      ;;

    2)

      echo "偶数"

      ;;

    *)

      echo "不是一个数字"

      ;;

    esac

    for循环:seq 1 5表示从1 到5的序列。

    示例1

    for i in `seq 1 5`;do

      echo $i

    done

    示例2 :循环字符和数字的组合

    for i in 1 2 3  a b;do echo $i;done

    示例3:循环系统命令

    for i in  `ls`;do echo $i;done

    while 循环

    while 条件;do

      command

    done

    示例1:

    a=5

    while [$a -ge 1];do

      echo $a

      a= $a-1

    done

    示例2:while死循环,用于监控

      while  :;do

        sleep 3

      done

    函数

    function sum()

    {

      sum1=$[$1+$2+$3]

      echo $sum1

    }

    sum $1 $2 $3

    运行脚本: sh a.sh 1 3 4    结果是8

    break或continue(用法相似)

    for i in `seq 1 5`

    do

      echo $i

      if [$i==3]

      then

        break(或者 continue)

      fi

      echo $i

    done

      echo aaa

    exit退出整个shell脚本

  • 相关阅读:
    MySQL安装失败,提示需安装MicroSoft Visual C++ 2013 Redistributable
    Selinium登录系统cookies的重复使用
    脚本绕开验证码,自动执行的方法
    Firebug显示停用状态
    web自动化测试中绕开验证码登陆的方式
    java使用poi包将数据写入Excel表格
    读取config配置
    定位元素的等待方法
    jxl读取Excel表格数据
    php中的魔术常量
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/8688118.html
Copyright © 2020-2023  润新知