shell基础

什么是shell:
>shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

一、编程基础

1、提供了编程环境:
            程序:算法+数据结构
            数据:程序的核心
            数据结构:数据在计算机中的类型和组织方式
            算法:处理数据的方式
程序编程风格:
            过程式:以指令为中心,数据服务于指令
            对象式:以数据为中心,指令服务于数据
shell程序:提供了编程能力,解释执行   
2、程序的执行方式:
    计算机:运行二进制指令
    编程语言: 人和计算机之间交互语言
            编程语言:
                    低级语言:
                                机器、汇编
            高级语言:
                    编译:高级语言-->编译器-->目标代码
                            c、c++
                    解释:高级语言-->解释器-->机器代码
                            shell,perl,python
3、过程式编程:
            顺序执行:
            循环执行:
            选择执行:
    shell编程:过程式、解释执行
            编程语言的基本结构:
            各种系统命令的组合
            数据存储:变量、数组
                    表达式
                    语句

二、shell脚本

1、shell脚本:
    包含一些命令或声明,并符合一定格式的文本文件
2、格式要求:首行遵守shebang机制!
            #!/bin/bash
            #!/usr/bin/python
            #!/usr/bin/perl 
3、shell脚本常用的途径:
            自动化常用命令
            执行系统管理和故障排除
            创建简单的应用程序
            处理文本、文件
4、创建shell脚本
    使用文本编辑器来创建文本文件,如:nano、vi、vim等
        首行必须要求声明shell的序列: #!
            !/bin/bash  上面说到的shebang机制
        最好给脚本添加注释以区分是个什么功能的脚本
            注释符号是以#开头

        脚本代码开头约定
            1、第一行一般为调用使用的语言
            2、程序名,避免更改文件名为无法找到正确的文件
            3、版本号
            4、更改后的时间
            5、作者相关信息
            6、该程序的作用,及注意事项
            7、最后是各版本的更新简要说明

            #!/bin/bash
            #********************************************************************
            #Author:                 It_luo
            #QQ:                     123456
            #Date:                   2018-08-01-20:59:52
            #FileName:             backup.sh
            #URL:                   http://blog.dklwj.com
            #Description:          The test script
            #Copyright (C):         2018 All rights reserved
            #********************************************************************

        脚本的基本结构
            #!SHEBANG                                    调用使用的语言
            CONFIGURATION_VARIABLES     定义变量值
            FUNCTION_DEFINITIONS              函数定义
            MAIN_CODE                                          主体

        运行脚本
        1、刚创建的文本文件是没有执行权限的,给予执行权限,执行的话指定脚本的绝对或相对路径  
        2、直接运行解释器,将脚本作为解释器程序的参数运行       
            [root@centos6 data]# chmod +x test.sh            #给脚本添加执行权限
            [root@centos6 data]# /data/test.sh                    # 绝对路径执行
            System version CentOS release 6.10 (Final)
            [root@centos6 data]# ./test.sh                           #相对路径执行
            System version CentOS release 6.10 (Final)
            [root@centos6 data]# bash test.sh                    #用shell里的bash解释器,把脚本当成参数的方式运行
            System version CentOS release 6.10 (Final)

三、shell变量

变量:命令的内存空间

    数据存储方式: ASCII
                字符: 110: 24
                数值: 110 --> 8
                            ×××
                            浮点数 
    变量类型
        作用:
            1、数据存储格式
            2、参与的运算
            3、表示的数据范围
        类型:
            字符
            数值:×××、浮点型
    编程程序语言:
        强类型: 
        弱类型:bash
            把所有要存储的数据统统当作字符进行
            不支持浮点数
    变量命名规范:
        1、不能使程序中的保留字:例如if, for、where等
        2、只能使用数字、字母及下划线,且不能以数字开头
        3、见名知义
        4、统一命名规则:驼峰命名法
                驼峰法又分为两类
                    大驼峰
                        如:StudentName
                    小驼峰
                        如:studentName
    变量种类:
        局部变量
            只对当前shell进程有效,对父shell或子shell及其他shell之外的shell进程均无效。
        环境变量
            当前shell及其子shell进程均有效,但对父shell无效
        本地变量
            生效范围为当前shell进程中某代码片断,通常指函数
        位置变量
            $1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
        特殊变量
            $?, $0, $*, $@, $#,$$
局部变量
            变量赋值:           name='value'
            可以引用的value:
                1、可以是接字串;
                            [root@centos6 data]# name="test"
                2、变量引用: 
                            [root@centos6 data]# name=test
                            [root@centos6 data]# echo "My name is ${name}"
                            My name is test
                            [root@centos6 data]#
                3、命令引用:
                            [root@centos6 data]# name=`hostname`
                            [root@centos6 data]# echo "name is ${name}"
                            name is centos6
                            [root@centos6 data]#
                4、变量引用:${name} $name        
                            "  ":弱引用,其中的变量引用会被替换为变量值
                                            [root@centos6 data]# name=`hostname`
                                            [root@centos6 data]# echo "name is ${name}"
                                            name is centos6
                            '  ': 强引用,其中的变量引用不会被替换为变量值,而是被当成普通字符串
                                            [root@centos6 data]# name=cobbler
                                            [root@centos6 data]# echo 'My name is $name'
                                            My name is $name
相关文章
相关标签/搜索