首页 > 系统服务 > 详细

linux的shell script

时间:2019-12-25 19:21:38      阅读:76      评论:0      收藏:0      [点我收藏+]

一、第一个script

  ① 编写习惯

    1)内容与功能 

    2)版本信息

    3)作者与联络方式

    4)建档日期

    5)历史记录

  ② hello world程序

    #!/bin/bash

    echo -e "Hello World!! \a \n"

    exit 0

  ③ 运行程序

    sh 程序

二、简单实例

  ① 让用户输入值,再输出到屏幕

    read -p “input your firstname” firstname 

    ...

    echo -e "your fullename is : ${firstname} ${lastname}"

  ② 利用data自动创建不同的文档名

    date1=$(date --date=‘2 days ago‘ +%Y%m%d)  前两天的日期

  ③ 数值运算

    表达方式1:declare -i total=${firstnu}*${secnu}

    表达方式2:total=$((${firstnu}*${secnu}))

 

三、script的执行方式

  ① sh 程序  直接执行,程序会在子程序bash内执行

  ② source 程序  程序在父程序bash内执行

 

四、test指令的测试功能

  ① test  -e  文件  &&  echo  "存在"  ||  echo  “不存在”  判断文件是否存在及相关属性

    ($?:返回值,正确为0,错误为1)

    -e:该文件是否存在

    -f:该文件是否存在且为 文件(file)

    -d:该文件是否存在且为 目录

    -r:该文件是否存在且具有 可读 权限

    -w:该文件是否存在且具有 可写 权限

    -x:该文件是否存在且具有 可执行 权限

    -u:该文件是否存在且具有 SUID 属性

    -g:该文件是否存在且具有 SGID 属性

    -s:该文件是否存在且为 非空文件

  ②  test  文件1 参数  文件2  比较两个文件

    参数有如下

    -nt:(newer than)判断文件1是否比文件2新

    -ot:(older than)

    -ef:判断两个文件是否为同一个文件,可用在判断hardlink上,是否都指向同一个inode上。

  ③  test  数值1  参数  数值2  判断两个整数

    参数有如下

    -eq:相等(equal)

    -ne:不等(not equal)

    -gt:大于(greater than)

    -lt:小于(less than)

    -ge:大于等于

    -le:小于等于

  ④  判定字符串的数据

    test  -z  string:判定字符串是否为空,若为空,则为true

    test  -n  string:判定字符串是否为非空,若为空,则为false

    test  str1 ==  str2:判定两个字符串相等,若相等,则为true

    test  str1 !=  str2: 判定两个字符串不相等,若相等,则为false

  ⑤  多重条件判定

    test  -r  文件  -a  -x  文件

    -a:and

    -o:or

    !:反向状态

 

五、判断符号:[ ]  跟test一样的用法

    [  "$home"  ==  "$samll"  ]  判断两个变量是否相同,每个组件都需要有空格键分隔,变量要用 双引号 括起来

 

六、shell script的默认变数($0,$1...)

    ① script的特殊变量如下

      $#:代表后接的参数 个数,如$4

      $@:代表[ "$1" "$2" "$3" "$4" ],每个变量是独立的

      $*:代表[ "$1n$2n$3n$4" ],n为分隔符,默认空格键

        $0:执行的脚本档名,$1:第1个参数,$2:第2个参数

    ② 栗子:直接在执行命令后面带上参数

      1) sh  文件  参数1  参数2  参数3

      2) 脚本内容:

          echo  "脚本名称是:${0}"  

          echo  "有几个参数:$#"

          echo  "参数内容是:$@"

          echo  "第1个参数是:${1}"

          echo  "第2个参数是:${2}"

七、参数变量号码偏移(想左移除) shift

    shift [n]  n是数字,可以一次移除几个参数

 

八、条件判断式

    ① if  [ 条件判断式 一] ; then

        执行的代码

        elif  [条件判断式二] ; then

        执行的代码

        else

        执行的代码

        fi

 

九、case ...in...esac判断语句   

      case  $变量  in

        "第一个变量内容"

          执行码

          ;;

        "第二个变量内容"

          执行码

          ;;

        *

          执行码

          ;;

      esac

 

十、function(函数)

    function  函数名(){

      执行代码

    }

 

十一、loop 循环

  ①不定循环

    while [ 判断式 ]

    do

      执行代码

    done

      当满足条件时循环

    until [判断式]

    do

      执行代码

    done

      当满足条件时终止循环

  ②固定循环

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

    do

      执行代码

    done

      第一次循环时,变量名的内容为变量值1 。。。

  ③固定循环。 for的另一种写法

    for (( 初始值;限制值;执行步阶 ))  (( i=1;i<=100;i=i+1 ))

    do

      执行代码

    done

  的

 

十二、shell script的追踪与debug

  sh  [-nvx]  scripts.sh

    -n:不要执行script,仅查询语法的问题

    -v:再执行script前,先将scripts的内容输出到屏幕上

    -x:将使用到的script内容显示到屏幕上。

linux的shell script

原文:https://www.cnblogs.com/kentee/p/12055808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!