当前位置:网站首页>Shell编程的规范和变量
Shell编程的规范和变量
2022-07-27 05:30:00 【1701y】
Shell编程规范
Shell脚本是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
Shell的作用
命令解释器,"翻译官"
介于内核和用户之间的翻译官
Shell脚本的概念
将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句以完成更复杂的操作
Shell脚本应用场景
重复性操作
有些时候需要重复操作,可以写一个脚本进行循环实现
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
将脚本写入crotable -e 来进去进行定时任务
编写脚本代码
使用vim文本编辑器
每行一条Linux命令,按执行顺序依次编写
在编写shell脚本使,在名字后面带上.sh,来代表这是shell脚本命令
赋予可执行权限
使脚本具有可执行属性
chomd +x 文件
执行脚本文件
方法一:脚本文件路径(绝对路径与相对路径)
必须要有x权限
方法二:sh脚本文件路径
方法三:source脚本文件路径 (在系统环境下执行脚本)
也可以通过“.”来执行


shell脚本构成
脚本声明
又叫“解释器”:若第一行为"#!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器,还有其他类型的解释器
注释信息
可执行语句

重定向和管道操作
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息

重定向操作

管道操作符号“|”
将左侧的命令输出结果,作为右侧命令的处理对象

Shell变量的作用和类型
变量的作用
用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置,系统系统环境的变化而变化
变量的类型
环境变量:由系统维护,用于设置工作环境
预定义变量:Bash中内置的一类变量,不能直接修改
自定义变量:由用户自己定义、修改和使用
位置变量:通过命令行给脚本程序传递参数
定义一个新的变量
变量名以字母或下划线开头,区分大小写,建议全大写。
变量名=变量值 (“=”是赋值的意思)
查看变量的值
echo $变量名

若想在输出的后面紧密连接上别的内容,直接添加是不行的,这时候我们需要用到“{}”,使用该符号,就可以实现以上说法。或者使用" ",将$代号全部引号进去,也可以实现。
我们先设置一个变量可以正常输出。如果我们想要在后面添加123 直接在后面添加,就输出不不出来。 或者中间空格在添加

这时候我们可以使用{}

或者“”

或者将123也赋值然后一起输出

赋值时使用引号
双引号:允许使用$符号引用其他变量值

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

反撇号:命令替换,提取命令执行后的输出结果 (``只能用引号 不能用大括号)
注:反撇里面不能嵌套反撇

和反撇类似的
从键盘输入内容为变量赋值
read -p "提示信息" 变量名

变量的作用范围
为了使用户定义的变量在所有的子 shell环境中能够继续使用,减少重复设置工作,可以通过内部命令export将指定的变量导出为全局变量

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

整数变量的运算
expr 变量1 运算符 变量2 [运算符 变量3]…
常用运算符
- 加法运算:+
- 减法运算:-
- 乘法运算:\*
- 除法运算:/
- 求模(取余)运算:%
注:这个方法不够简洁,仅作了解即可

变量和运算符之间要用空格隔开 否则会被认作一个字符直接输出如

简洁运算法
1 echo $[1+2]
2 echo $((1+2))
3 let i=1+2
echo $i


n++ 相当于 i=$[$i+1]
n-- 相当于 i=$[$i-1]
n+=2 相当于 i=$[$i+2]



边栏推荐
- Record of pychart running jupyter notebook in virtual environment
- 1. Install redis in CentOS 7
- Some problems about too fast s verification code
- PSI | CSI and ROC | AUC and KS - memorandum
- GoLand 编写go程序
- About the problem that Druid can't connect to the database
- PSI|CSI和ROC|AUC和KS -备忘录
- Tips - completely delete the files on the USB flash drive
- Fix the problem that the paging data is not displayed when searching the easycvr device management list page
- Pruning - quantification - turn to onnx Chinese series tutorials
猜你喜欢

FTX US推出FTX Stocks,向主流金融行业迈进

EasyRecovery14数据恢复软件官方功能简介

Fix the problem that the paging data is not displayed when searching the easycvr device management list page

Sunflower teaches you how to prevent denial of service attacks?

如何让最小 API 绑定查询字符串中的数组
![Summary of frequently asked questions in the interview [summarized after painstaking work all night]](/img/70/90543c23326305590242716b989643.png)
Summary of frequently asked questions in the interview [summarized after painstaking work all night]

1. Install redis in CentOS 7

Soul submitted an application for listing in Hong Kong stocks, accelerating the diversified and scene based layout of social gathering places

FTX.US推出股票和ETF交易服务,让交易更透明

银行业客户体验管理现状与优化策略分析
随机推荐
Sok: the faults in our asrs: an overview of attacks against automatic speech recognition
System security and Application
Problems related to compilation and training of Darknet yolov3 and Yolo fast using CUDA environment of rtx30 Series graphics card on win10 platform
FTX 基金会资助1500万帮助新冠疫苗临床实验,将影响全球公共卫生
Detection and identification data set and yolov5 model of helmet reflective clothing
Alibaba cloud SMS authentication third-party interface (fast use)
众多世界500强企业集聚第二届数博会,数字产业大幕即将开启!
Many of the world's top 500 enterprises gathered at the second digital Expo, and the digital industry curtain is about to open!
Redis快速学习
Project training experience 2
Redis' idea under windows is not connected
PSI|CSI和ROC|AUC和KS -备忘录
手机上也能训练BERT和ResNet了?!
程序、进程、线程、协程以及单线程、多线程基本概念
deepsort源码解读(五)
PSI | CSI and ROC | AUC and KS - memorandum
工控用Web组态软件比组态软件更高效
px4源码编译之 建立自己的程序模块
MangoDB
shell常用命令-备忘录
