SHELL 编程规范与变量

ZYC·2023-11-20 23:51·11 次阅读

SHELL 编程规范与变量

shell

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

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

shell 脚本的概念#

将要执行的命令按顺序保存到一个文本文件

给该文件可执行权限

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

应用场景#

重复操作

加户型任务

批量事务处理

服务运行状态监控

定时任务执行

默认:/bin/bash

 

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

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

 

三种处理逻辑#

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

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

循环执行:程序执行过程中需要重复执行多次某段语句(已知次数 已知条件 死循环)

 

脚本的组成#

1、声明的解释器

2、注释信息

3、执行命令

 

 

 

 

 

 

以.sh结尾  shell语法会高亮

 

 #不用 .sh结尾

 #没有高亮

 

 #.sh结尾

 #有高亮

 

执行脚本#

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

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

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

 

 

 

 #没执行前还是a=10

 #用source 修改了环境内容

 

 

实验  输入脚本名全局运行#

 

 

#将脚本与其中一个路径做软连接 全局,再给test.sh 执行权限。直接输入脚本名就可以全局执行。

shell 脚本的本质 程序

 

实验脚本 做本地yum#

 

 #编辑脚本

 #将建立本地yum 步骤输入脚本里  

 

#执行脚本

 

脚本错误#

1、命令错误 :不会影响接下来的命令执行,但本条命令不执行

bash -x +脚本 (执行)

2、语法错误 : 直接影响脚本,无法正常运行

bash -n 检查语法错误 (提示的出错行数不一定是准确的)

3、逻辑错误 只能使用 bash -x 进行

 

加一些 脚本的安全选项

脚本里+ set -e 一旦出错就会停止

set -u 变量不存在不让执行

变量名=变量值

 

 

 

 

重定向#

 

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

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

我们称为:标准输入

 

 

tty   #查看终端

改变输出 方向#

1、输出别的 终端设备

2、输出到文件中 (< >) ls > test (一个> =覆盖 两个>> = 追加)

 

 

| 管道符 :将第一个命令的结果 当作后一个命令的处理对象

变量#

变量:值可以变化

常量: 值不可以变化

 

shell 部分 数据类型 所有 的数类型 都是字符串

变量名=变量值 两边没有空格

调用变量

echo $变量名

删除变量 unset 变量名

重新定义变量 变量名=变量值

追加变量值 变量名+=变量值

作用#

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

变量名:使用固定的名称,由系统预定或用户定义

变量值:能够根据用户设置,系统环境的变化而变化

 

变量基础#

常见shell变量类型#

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

预定义变量: bash 中内置的一类变量  不能修改  规定好的变量  放在那里让你使用

环境变量:由系统维护,用于设置工作环境   当前目录 当前主机名  $PATH

只读变量:只可以读取不可以更改    只能修改 常量

位置变量 :通过命令行给脚本传递参数

 

echo $? 自定义变量

预定 :bash shell $? $$ $* $@ 程序中带的

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

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

位置变量 $1 $2..$n

 

 命名要求#

区分大小写

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

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

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

大驼峰  StudentFirstName

小驼峰  StudentFirstName

下划线  Student_name

 

 

 特殊符号#

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

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

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

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

 

变量追加#

 #临时性

 

 

 #小型计算器

 

 

 

 

整数变量运算#

expr  变量1  运算符  变量2 [运算符  变量3]

常用运算符#

加法运算:+

减法运算:-

乘法运算:、*

除法运算:/

取模(取余):%

 

 

 export a=10 (加了export 当前进程以及后续子进程都会知道相对应的信息)

 

 

 

 

 

 实验  脚本找 IP地址  主机名 系统版本  cpu型号  内存大小  磁盘大小#

 

 

#输入要执行脚本

#执行脚本

 

 位置变量#

 位置变量也成为位置参数,使用 $1、$2、$3、...、$9表示

 

 

 

 

 

预定义(状态)变量#

 

$? 代表上一次命令执行结果是否正确 无法代表前前次。0 代表正确 非0代表不正确

$0 代表脚本本来的意思(名字)当前目录

$$ 代表当前bash的pid

$# 代表位置参数的总个数

$@ 代表返回所有参数 每一个参数都是一个独立的个体返回

$* 代表返回所有参数 所有参数当成一个整体返回

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

 

 

 

echo 打印在屏幕上 (写脚本的时候 对齐 不换行)

含义:回声

 

 总结#

shell的作用与应用场景

shell脚本的编写规范与执行方法

重定向与管道符的作用与使用方法

自定义变量赋值时单引号、双引号、反撇号的使用方法

数值变量的常用运算符:+、-、\*、/、%

环境变量、只读变量、位置变量、预定义变量的用途

 

 

 

 

 

 

 

 

 

 

 

 

posted @   citywalk  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
目录