shell编程规范与变量

 

目录

 

面向过程语言 开发的时候 需要一步一步执行

面向对象语言 开发的时候将任务当成一个整体

Shell脚本概述

Shell脚本的概念

Shell脚本应用场景

shell脚本的构成

脚本的组成

脚本搭建yum仓库

脚本执行逻辑和执行方式

脚本执行逻辑

如果你想让脚本全局运行或者可以补全,要将脚本放入$PATH路径下

使用1和2执行脚本,是会新开一个bash环境去执行,不影响当前bash环境,而如果使用3去执行脚本,会直接在当前环境执行。

脚本错误及调试

重定向操作

改变输出方向

shell 不分数据类型

变量的类型

命名要求

特殊符号

变量追加值

变量作用范围

整数的运算

环境变量

只读变量

预定义(状态)变量


面向过程语言 开发的时候 需要一步一步执行
  • 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理

  • 问题规模小,可以步骤化,按部就班处理

  • 以指令为中心,数据服务于指令

  • C,shell

面向对象语言 开发的时候将任务当成一个整体
  • 将编程看成是一个事物,对外界来说,事物是直接使用的,不用关心事物内部的情况。而编程就是设置事物能够完成功能。

  • 一种认识世界、分析世界的方法论。将万事万物抽象为各种对象

  • 类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合

  • 对象是类的具象,是一个实体

  • 问题规模大,复杂系统

  • 以数据为中心,指令服务于数据

  • java,python,golang等 云 go k8个字母s 平台

shell将人类使用的高级语言翻译成二进制,也可以将二进制翻译成高级语言

cat text.sh

echo“hello ” 硬件

人类写了一个命令集合,然后用bash (shel1) 去翻译给硬件执行

bash text.sh

Shell脚本概述

Shell脚本的概念
  • 将要执行的命令按顺序保存到一个文本文件

  • 给该文件可执行权限

  • 可结合各种Shell控制语句以完成更复杂的操作

Shell脚本应用场景
  • 重复性操作

  • 交互性任务

  • 批量事务处理

  • 服务运行状态监控

  • 定时任务执行

shell脚本的构成

1.脚本电明(解释器):第一行开头"#!/bin/bash"表示此行以下的代码语是通过/in/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器,#! /bin/python #! /bin/expect

2.注释信息: 以#开头的语句表示为注释信息

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

脚本的组成

1.声明解释器

2.注释信息

3.执行命令

#! /bin/bash

#这是我的第一个脚本

cd /opt

ls

执行脚本 1.直接调用shell 解释器 加上 脚本的名字bash 脚本名 不需要加上权限

2.路径/脚本 路径:绝对相对 但是这个需要权限

3.source (.) 加脚本 名字 不建议使用 不需要权限 会修改目前的环境内容,会有一些问题

为什么命令可以补全? 运行权限如果你想让脚本 全局 运行 (补全) ,将脚本放入SPATH路径下 shell 脚本的本质程序

脚本搭建yum仓库

脚本执行逻辑和执行方式

脚本执行逻辑

1、顺序执行:程序按从上到下顺序执行

2、选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

3.循环执行:程序执行过程中需要重复执行多次某段语句

如果你想让脚本全局运行或者可以补全,要将脚本放入$PATH路径下
使用1和2执行脚本,是会新开一个bash环境去执行,不影响当前bash环境,而如果使用3去执行脚本,会直接在当前环境执行。
脚本错误及调试

1.命令错误

不会影响接下来的 命令执行, 但是本条命令不执行

bash -x 脚本模拟执行后 发现错误

2.语法错误

直接影响脚本无法正常运行

bash -n 脚本 检查语法错误

3.逻辑错误

只能自己去筛查

了解: 加一些 脚本的安全选项

set -e 出错就停止

set -u 变量不存在就停止

重定向操作

重定向: 改变电脑数据的输出方向

默认 电脑数据的输出方向是屏幕

你发了一条指令给电脑操作, 电脑会回复结果给你,结果是一定显示在屏幕上

我们称为 : 标准输出

如果电脑没有正确回复

我们称为: 错误输出

我们通过 键盘 鼠标 扫描仪 话筒 等设备输入给电脑的指令

我们称为:标准输入

改变输出方向

1.输出到别的 终端设备

2.输出到文件中

'' > 覆盖

'' >> 追加

| 管道符 天天见

将第一个命令的结果当作后一个命令的处理对象。

变量:值可以变化的

常量:值不可以变化

shell 不分数据类型

所有的 数类型 都是 字符串

要求方式
设置变量变量名=变量值 两边没有空格
调用变量echo $变量名
删除变量unset 变量名
重新定义变量变量名=变量值
追加变量值变量名+=变量值
变量的类型

1.自定义变量:由用户自己定义,修改和使用

2.预定义变量 $? $$ $* $@ shell 程序中带的

3.环境变量env 看到所有环境的变量

4.只读变量 只可以读不可以改

5.位置变量 通过命令行给脚本程序传递参数

命名要求

  • 区分大小写

  • 不能使程序中的保留字和内置变量: 如: if,for,hostname 命令 a=

  • 只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线“.”,和主机名相反。

  • 不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

  • 大驼峰StudentFirstName

  • 小驼峰studentFirstName

  • 下划线student_name

特殊符号

${} 定义的变量名的范围 ${ } 一定不会错

"":变量在双引号中可以识别 弱引用

'':变量在单引号中不被识别 强应用

``:反撇号 代表引用命令执行的结果 效果等于 $()

变量追加值

格式

title=huoyingrenzhe

title+=qidong

变量名+=追加值

read -p

从键盘输入的内容变成变量

read -t :输入等待时间(单位默认为秒)

变量作用范围

方法:

  1. 格式1:export 变量名

  2. 格式2:export 变量名=变量值

可以使用pstree 查看shell的环境

输入bash进入子shell

ctrl+D组合exit 退出子shell

整数的运算

expr只能进行整数的运算

格式: expr 变量1 运算符 变量2 [运算符 变量3]

运算符:

加法 +

减法 -

乘法 \ *

除法 /

取余 (取模)%

环境变量
  1. 由系统提前创建,用来设置用户的工作环境

  2. 可以使用env查看环境变量

  3. 需要记住的常用环境变量

#env

#可以看到所有

$USER 表示用户名称

$HOME 表示用户的宿主目录

$LANG 表示语言和字符集

$PWD 表示当前所在工作目录

$PATH 表示可执行用户程序的默认路径

环境变量:

  • 可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量

  • 一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程

  • 一般只在系统配置文件中使用,在脚本中较少使用

配置文件:

/etc/prodile 如果修改此文件会作用于所有用户

~/.bash_profile 用户独立的配置文件

只读变量

变量值不允许修改(重新赋值)的情况

无法使用 unset删除

最快方法重启

预定义(状态)变量

bash 帮你定义好了 拿来用就可以了,你不需要知道为什么,记住

  • $*:表示所有位置参数的内容看成一个整体返回 返回所有

  • $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有

  • $?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常

  • $#:表示命令行中位置参数的总个数

  • $0:表示当前执行的脚本或程序的名称 当前脚本的名字

  • $$:当前bash的进程id

  • $!: 后台任务最后一个id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值