Shell编程规范与变量

目录

什么是Shell

Shell脚本

一、Shell脚本概述

概念

Shel脚本应用场景

二、Shell编程规范

1、创建Shell 程序的步骤

2、Shell脚本的构成

3、Shell脚本的执行

赋予可执行权限  

3.1 脚本文件路径(绝对路径与相对路径)

三、重定向与管道操作

1、交互式硬件设备

2、重定向操作的符号用法

3、管道符的运用

四、Shell变量的作用、类型

1、变量的作用

2、变量的类型

3、自定义变量

3.2 赋值时使用引号

3.3 交互式定义变量(read)

1、环境变量

2、只读变量


什么是Shell

  • Linux系统中运行的一种特殊程序
  • 在用户和内核之间之间充当“翻译官” ——>shell会将所接收到的命令转换成计算机所能识别的二进制语言
  • 用户登陆Linux系统时,自动加载一个Shell程序
  • Bash是Linux系统中默认使用的Shell程序

内核:用于调用计算机硬件资源
shell:将用户指令转换成计算机语言让内核去调用计算机硬件资源
bash是一个文件,linux系统中万物皆文件
bash文件位于/bin/bash

用户的登录Shell

  • 登录后默认使用的Shell程序,一般为/bin/bash
  • 不同Shell的内部指令、运行环境等会有所区别

Shell脚本

一、Shell脚本概述

概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操作

Shel脚本应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行
  • ......

二、Shell编程规范

1、创建Shell 程序的步骤

  1. 创建一个包含命令和控制结构的文件。
  2. 编辑完之后修改这个文件的权限使它可以执行 #使用chmod +x 文件名
  3. 检测语法错误(命令集合是否正确) #set -x 追踪脚本是否有故障
  4. 执行脚本./text.sh

2、Shell脚本的构成

  • 使用vim文本编辑器
  • 每行一条Linux命令,按执行顺序依次编写
vim [文件名].sh

1.脚本申明(解释器):若第一行为“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。

2.注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。

3.可执行语句:比如echo命令,用于输出" "之间的字符串

#!/bin/bash
# This is my first Shell-Script.我的第一个脚本
cd /home
echo "宝宝看:"
pwd
echo "xiang ni le" > lc.txt
echo "想你了:"
cat lc.txt

 

 Shell是一个面向字符串的编程语言,可以跟Python之类的其他语言配合起来,比如某个复杂的功能使用一个Python脚本来实现,然后在Shell中调用这个脚本实现较复杂的功能;或者反过来,在Python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。

编程语言类型

编译型C  、 C++  、 JAVA  、 GO代码文件需要先编译后,程序才能执行
解释型PYTHOBN、Shell、PHP代码是边解释边运行

 总结:shell脚本功能:完成自动化运维工作,批量完成重复操作,结合crontab完成周期性任务

3、Shell脚本的执行

赋予可执行权限  
  • 使脚本具有可执行属性

    方法一:指定路径的命令,要求文件必须有 x 权限。
    chmod +x /root/test.sh
    指定绝对路径:/root/test.sh 
    指定相对路径:./first\.sh

  • 3.1 脚本文件路径(绝对路径与相对路径)

    必须有执行(x)权限

    以根目录下的text.sh为例:

    ./text.sh    #相对路径
    /root/text.sh  #绝对路径

    方法二:指定Shell来解释脚本,不要求文件必须有 x 权限。
    sh 脚本路径:sh first.sh
    source 脚本路径:. first.sh 或者 source first.sh
     

三、重定向与管道操作

1、交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据
  • 标准输出:通过该设备向用户输出数据
  • 标准错误:通过该设备报告执行出错信息
类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

2、重定向操作的符号用法

类型操作符用途
重定向输入<从指定的文件中读取数据,不是从键盘输入读取
重定向输出>将输出的结果保存在指定的文件中(覆盖原文件)
>>将输出的结果追加在指定文件的末尾
重定向错误输出2>将错误信息保存在指定的文件(覆盖原文件内容)
2>>将错误信息追加在指定文件的末尾
混合输出&>将标准输出和标准错误信息都保存在同一个文件中

3、管道符的运用

 管道符的作用是连接两个命令,将第一个命令的标准输出作为第二个命令的标准输入。 同一行命令中可以使用多个管道符。(管道符的使用前提,一定是管道符前面的命名有输出结果,后面的命令是搭配着输出结果进行操作)

四、Shell变量的作用、类型

1、变量的作用

用来存放系统和用户需要使用的特定参数(值)

  • 变量名:使用固定的名称,由系统预设或用户定义
  • 变量值:能够根据用户设置、系统环境的变化而变化

2、变量的类型

  • 自定义变量:由用户自己定义、修改和使用
  • 特殊变量:环境变量、只读变量、位置变量、预定义变量

3、自定义变量

3.1

变量名=变量值      #变量名以字母或下划线开头,区分大小写,建议全大写
 
echo $变量名      #查看变量的值

 

3.2 赋值时使用引号
  • 双引号允许通过$符号引用其他变量值
  • 单引号禁止引用其他变量值, $视为普通字符
  • 反撇号命令替换,提取命令执行后的输出结果,​​``​​​和$(…)作用相同

1、双引号允许通过$符号引用其变量值

 2、单引号禁止引用其他变量值, $视为普通字符

 3、`...`          $(...)    提取里面的命令执行后的结果  (先里后外执行)

3.3 交互式定义变量(read)

read命令获取输入内容

-p提示用户的信息
-n定义字符数
-s不显示用户输入的内容,常用于输入密码read -s -p "input your password:" pass
-t定义超时时间,超过多长时间没输自动退出从文件读取内容赋值给变量(默认10s)

stty -echo  //关闭屏幕回显
stty echo   //开启屏幕回显1、从文本读取内容赋值给变量

1.从文本读取内容赋值给变量

read -p 提示信息 变量名
echo $变量名

在脚本中编写:

1、环境变量

  • 由系统提前创建,用来设置用户的工作环境
  • 配置文件:/etc/profile(全局配置文件) 、~/.bash_profile(用户的独立配置文件)

2、只读变量

用于变量值不允许被修改的情况

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前言 10 场景说明 11 基础知识简介 14 Linux 14 Linux产生与发展 14 Linux特点和优势 15 Shell 16 Shell脚本语言与编译型语言的差异 17 Shell分类 18 Shell使用 19 项目一 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42 1.3.3 系统管理命令 52 1.3.4 关机/重启/退出 53 1.3.5 安装操作命令 53 1.3.6 用户操作命令 54 1.3.7 网络下载命令 55 1.3.8 服务操作命令 57 任务1.4 Shell脚本 58 1.4.1 第一个shell脚本:Hello World 58 1.4.2 脚本介绍 59 1.4.3 shell程序结构 59 1.4.4 shell脚本运行 60 任务1.5 Shell案例:打印有色彩的文本 61 任务1.6 Shell案例:图案打印 62 练习(每题10分,共计100分) 66 项目二 Shell变量 67 [学习目标] 67 任务2.1 Linux环境变量 68 2.1.1 查看环境变量 69 任务2.2 Shell变量 70 2.2.1 定义变量 70 2.2.2 使用变量 70 2.2.3 只读变量 71 2.2.4 删除变量 72 任务2.3 特殊符号 72 任务2.4 Shell案例:显示系统信息: 78 练习(每题12.5分,共计100分) 80 项目三 Shell传递参数 81 [学习目标] 81 任务3.1 Shell传递参数 82 任务3.2 Shell案例:参数比较 85 任务3.3Shell案例:通过参数描述变量 86 练习(前两题每题30分,第三题40分,共计100分) 87 项目四 Shell数组 89 [学习目标] 89 任务4.1 定义数组 90 任务4.2 使用数组 90 任务4.3 Shell案例:数组的使用 92 练习(100分) 95 项目五 Shell运算符 96 [学习目标] 96 任务5.1 Shell基本运算符 97 5.1.1 运算符 97 5.1.2 算术运算符 97 5.1.3 关系运算符 99 5.1.4 布尔运算符 101 5.1.5 逻辑运算符 103 5.1.6 字符串运算符 104 5.1.7 文件测试运算符 106 任务5.2 Shell案例:计算器 109 练习(每题25分,共计100分) 111 项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 项目七 Shell流程控制 126 [学习目标] 126 任务7.1 Shell流程控制 127 7.1.1 if 判断语句 127 7.1.2 for 循环语句 130 7.1.3 while 循环语句 131 7.1.4 until 循环语句 134 7.1.5 case多选语句 135 7.1.6 跳出循环体 137 任务7.2 Shell案例:重复执行命令和简单计算器 139 任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141 练习(前两题每题30分,第三题40分,共计100分) 144 项目八 Shell函数 146 [学习目标] 146 任务8.1 Shell函数 147 8.1.1 Shell中函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目九 Shell输入/输出重定向 158 [学习目标] 158 任务9.1 linux文件描述符 159 任务9.2 Shell输入/输出重定向 160 9.2.1 输出重定向 160 9.2.2 输入重定向 163 9.2.3 重定向深入讲解 164 任务9.2 Shell案例:通过重定向测试批量添加ip 166 练习(每题25分,共计100分) 169 项目十 Shell文件包含 171 [学习目标] 171 任务10.1 Shell文件包含 172 任务10.2 Shell案例:查找最大文件 172 练习(每题50分,共计100分) 174 项目十一 Shell文本处理命令 175 [学习目标] 175 任务11.1 学习和使用grep 176 任务11.2 学习和使用sed 179 任务11.3 学习和使用cut 183 任务11.4 学习和使用awk 185 练习(第一题10分,第2-7每题15分,共计100分) 188 项目十二 Shell的调试 189 [学习目标] 189 任务12.1 使用trap命令 190 任务12.2 使用tee命令 192 任务12.3 使用“调试钩子” 193 任务12.4 使用Shell的执行选项 194 练习(每题50分,共计100分) 196 项目十三 Shell综合案例一(lnmp+wordpress) 197 [学习目标] 197 任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198 13.1.1 准备工作 198 13.1.2 安装Mysql5.6.29 199 13.1.3 安装PHP5.5.12 202 13.1.4 安装Nginx1.10 205 13.1.5 安装WordPress 206 13.1.6 启动网页 207 任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207 13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,共计100分) 218 项目十四 shell综合案例二(安装Openstack) 219 [学习目标] 219 任务14.1 手动安装Openstack 220 什么是Openstack 220 14.1.1基本环境准备 222 14.1.2 安装mysql数据库服务 225 14.1.3 安装keystone认证服务 226 14.1.4 安装glance镜像服务 230 14.1.5 安装nova计算服务 233 14.1.6 安装neutron网络服务 238 14.1.7 安装dashboard服务 248 任务14.2 脚本安装openstack 250 14.2.1 基本环境脚本的编写 255 14.2.2 mysql脚本的编写 256 14.2.3 keystone脚本的编写 258 14.2.4 glance脚本的编写 263 14.2.5 nova脚本的编写 266 14.2.6 neutron脚本的编写 270 14.2.7 dashboard脚本的编写 279 14.2.8 验证登录,使用openstack 280 附录Shell编码规范说明 295 1. 什么时候使用shell 295 2.Shell文件和解释器调用 295 3.环境 296 4.注释 296 5.格式 298 6.特性及错误 304 7.命名转换 308 8.调用命令 311

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值