美文网首页
12)Shell 编程

12)Shell 编程

作者: bullion | 来源:发表于2018-08-31 13:52 被阅读0次

    脚本格式要求

        1.脚本以 #!/bin/bash 开头  (表示用 bash 来进行解析)

        2.脚本需要有可执行权限 chmod 744 [文件名]

        3.也可以不给权限直接执行  sh ./myShell.sh

    Shell 变量

        系统变量

            $HOME

            $PWD

            $SHELL

            $USER

            等等......   输出预定义系统变量 echo "PATH=$PATH"

        用户自定义变量

            定义A变量 A=100

            撤销A变量 unset A

            输出A变量 echo "A=$A"

            定义静态A变量 readonly A=99

            输出静态A变量 echo "A=$A"

            静态变量不能 unset

        显示所有shell变量并分页显示 set | more

        把命令的结果返回给变量 方式一 A=`ls -la` 方式二 A=$(ls -la) 等价于反引号

    环境变量

        1.在/etc/profile文件中定义TOMCAT_HOME环境变量    

            TOMCAT_HOME=/opt/tomcat

            export TOMCAT_HOME

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

        2.刷新文件

            source 配置文件 让修改后的配置信息立即生效

        echo $变量名 查询输出环境变量的值

    多行注释

        :<<!

        !

    单行注释

        #

    位置环境变量

        $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的用${10}表示

        $* 代表命令行所有的参数,把所有参数看成一个整体

        $@ 代表命令行所有的参数,把每个参数区分对待

        $# 代表参数个数

    预定义变量

        $$ 当前进程的进程号PID

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

        $? 最后一次执行的命令的返回状态 0=正确执行,非0=不正确

    运算符

        $((运算式)) $[运算式]


        expr m + n 注意expr运算符前后要有空格

        expr \*,/,% 乘,除,取余

        求两个参数的和 SUM=$[$1+$2]

    条件判断

        [ iftest ] 不为空返回true

        [] 为空返回false

        [ iftest ] && echo ok || echo notok 条件满足,执行后面的语句

        if [ 条件判断式 ] 注意条件判断式前后要有空格

        1.两个整数的比较

            = 字符串比较

            -lt 小于

            -le 小于等于

            -eq 等于

            -gt 大于

            -ge 大于等于

            -ne 不等于

        2.按照文件权限进行判断 [ -r 文件 ]

            -r 有读的权限

            -w 有写的权限

            -x 有执行的权限

        3.按照文件类型进行判断

            -f 文件存在并且是一个常规文件

            -e 文件存在

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

        案例:

        与 方式一 -a 方式二 &&

        或 方式一 -o 方式二 ||

        !

    流程控制

        if [ 条件判断式 ] 条件判断式两边必须有空格

        if [ 条件判断式 ]

        then

            程序

        fi

        或

        if [ 条件判断式 ]

        then

            程序

        elif [ 条件判断式 ]

        then

            程序

        fi

        case

        case $变量名 in

            "值1")

                如果变量的值等于值1,则执行程序1

                ;;

            "值2")

                如果变量的值等于值2,则执行程序2

                ;;

        *)

        如果变量的值都不是以上的值,则执行此程序

        ;;

        esac

        for循环,语法一

        for 变量 in 值1 值2 值3

        do

            程序

        done

    案例:打印命令行输入的参数 【使用$* $@】

        for循环,语法二

    for((初始值;循环控制条件;变量变化))

    do

        程序

    done

    案例:从1加到100的值输出显示

        while循环

        while [ 条件判断式 ]

        do

            程序

        done

    读取控制台输入

        read (选项) (参数)

            选项:

                -p 指定读取值时的提示符

                -t 指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待

    案例:

            参数:

                变量,用于接收用户输入

    函数

        系统函数

            basename [路径] [后缀] 返回完整的路径最后 / 的部分,常用于获取文件名,如果输入后缀则获取到的文件名不包含后缀

            dirname 返回完整路径最后 / 前面的部分,常用于返回路径部分

        自定义函数

            自定义函数不需要形参

            function 函数名(){

                程序

            }

    案例:计算两个参数的和

    相关文章

      网友评论

          本文标题:12)Shell 编程

          本文链接:https://www.haomeiwen.com/subject/dglswftx.html