当前位置:网站首页>Shell脚本基本编辑规范及变量
Shell脚本基本编辑规范及变量
2022-07-30 03:59:00 【千城泪1999】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、Shell脚本概述
1.什么是shell
shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。
2.shell的作用
Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个"命令解释器"的角色,负责接收用户输入的操作指令(命令并进行解释,将需要执行的操作传递给内核调动硬件执行,并输出执行结果。
3.Shell脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
常见的 shell解释器程序有很多种,使用不同的 Shell时,其内部指令、命令行提示符等方面会存在一些区别。
通过/etc/shells文件可以了解当前系统所支持的Shell 脚本种类。
[[email protected] ~]# cat /etc/shells
/bin/sh #是bash命令的软链接(已经被/bin/bash所替换)
/bin/bash #基准于GNU的框架下发展出的shell
/sbin/nologin #这个shell可以让用户无法登录主机,可以限制某些用户通过shell登陆系统
/usr/bin/sh #已经被bash所替换
/usr/bin/bash #centos和redhat系统默认使用bash shell
/usr/sbin/nologin #这个shell可以让用户无法登录主机,可以限制某些用户通过shell登陆系统
/bin/tcsh #csh的增强版,与csh完全兼容整合了csh,提供更多的功能
/bin/csh #已经被/bin/bash所替换
nologin是centos版本问题,比如7.4能看到,7.6看不到却并不代表没有,只是隐藏了
**bash ( /bin/bash)**是目前大多数Linux版本采用的默认Shell
4.Shell脚本运行方式
第一步:创建一个包含命令和控制结构的文件。
第二步:修改这个文件的权限使它可以执行 #使用chmod +x 文件名
第三步:检测语法错误 #set -x 追踪脚本是否有故障
四步:执行./ceshi.sh
5.Shell脚本的构成
第一行为"#!/bin/bash” #脚本申明(默认解释器)
表示此行以下的代码语句是通过/bin/bash程序来执行。
还有其他类型的解释器,比如#! /usr/bin/python、 #!/usr/bin/expect
注释信息:以"#"开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行
可执行语句:如echo命令,用于输出””之间的字符串
6.Shell脚本的执行 (三方法)
1.脚本文件路径(绝对路径与相对路径,需要x权限)
相对路径
绝对路径
2.sh、bash脚本文件路径(可以没有执行权限)

3、source或.脚本文件路径(不需要x权限)
这种是在当前环境下执行

二、重定向与管道操作
1.交互式硬件设备:
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
| 类型 | 设备文件 | 文件描述编号 |
| 标准输入 | /dev/stdin | 0 |
| 标准输出 | /dev/stdout | 1 |
| 标准错误输出 | /dev/stderr | 2 |
[[email protected] ~]# echo "123456" > key.txt
[[email protected] ~]# cat key.txt
123456
[[email protected] ~]# passwd --stdin zhangsan < key.txt
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
2.重定向操作

[[email protected] ~]# echo "qqq" > test.txt
[[email protected] ~]# cat test.txt
qqq
[[email protected] ~]# echo "qwe" > test.txt
[[email protected] ~]# cat test.txt
qwe
[[email protected] ~]# echo "qqq" >> test.txt
[[email protected] ~]# cat test.txt
qwe
qqq
3.重定向与管道操作
管道操作符号“|”
将左侧的命令输出结果,作为右侧命令的处理对象
[[email protected] ~]# rpm -qa | grep httpd #只显示httpd相关文件
httpd-2.4.6-97.el7.centos.x86_64
httpd-tools-2.4.6-97.el7.centos.x86_64
三、Shell变量
1.什么是变量
变量是会变化的值,不会变化的是叫常量,只读变量或是静态变量
2.变量的作用
用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
四、shell赋值
1.shell赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值, $视为普通字符
反撇号:命令替换,提取命令执行后的输出结果,``和$(…)作用相同
=号两边不能有空格
定义a=hello,而9.9没有定义,所以输出中间有空格
因为a9没有被定义,所以无法输出
可以使用{}和“”进行分割,{}是应用在变量名,“”是应用在$变量名,如果使用‘’则视为普通字符
反撇号``,直接调用命令结果 ,因为echo " a " 9.9 = h e l l o 9.9 a b c = ‘ " a"9.9=hello9.9 abc=`" a"9.9=hello9.9abc=‘"a"9.9` 所以 abc=hello9.9
2.从键盘输入内容为变量赋值
read命令获取输入内容
-p:提示用户的信息
-n:定义字符数
-s:不显示用户输入的内容,常用于输入密码read -s -p "input your password:" pass
-t:定义超时时间,超过多长时间没输自动退出从文件读取内容赋值给变量(默认10s)
方法一
read -p 提示信息 变量名
echo $变量名

方法二:
在脚本中编写,在命令行实现read获取
五、变量的类型
自定义变量:由用户自己定义、修改和使用
特殊变量:环境变量、只读变量、位置变量、预定义变量
1.shell赋值时使用引号
2.自定义变量
[[email protected] ~]# a=Python
[[email protected] ~]# v=2.1.11
[[email protected] ~]# echo $a $v
Python 2.1.11
3.环境变量:
环境变量指的是出于运行需要,由Linux系统提前创建的一类变量,主要用于设置用户的工作环境,包括用户宿主目录、命令查找路径、用户当前目录、登录终端等。
环境变量的值由Linux系统自动维护,会随着用户状态的改变而改变。
使用env命令可以查看到当前工作环境下的环境变量。
边栏推荐
- EasyNVR平台级联到EasyCVR,视频播放一会就无法播放是什么原因?
- 数组和结构体
- TCP congestion control technology and acceleration principle of BBR
- 2022-07-29 Group 4 Self-cultivation class study notes (every day)
- 【转】Swift 中的面向协议编程:引言
- 小程序毕设作品之微信积分商城小程序毕业设计成品(6)开题答辩PPT
- Pytorch框架学习记录3——Transform的使用
- The first day of Flink learning - what is batch and streaming computing?
- Rpc 和 gRpc 简介汇总
- Mini Program Graduation Works WeChat Points Mall Mini Program Graduation Design Finished Product (8) Graduation Design Thesis Template
猜你喜欢
发给你的好友,让 TA 请你吃炸鸡!
![[Node accesses MongoDB database]](/img/00/41000fc7a038f4d46151ab479174b9.png)
[Node accesses MongoDB database]

骁龙7系芯片表现如何?Reno8 Pro佐证新一代神U

Nacos Configuration Center

Mini Program Graduation Works WeChat Points Mall Mini Program Graduation Design Finished Product (2) Mini Program Function

How does the AI intelligent security video platform EasyCVR configure the simultaneous transmission of audio and video?

Nacos service registration and discovery

Roperties类配置文件&DOS查看主机网络情况

Rpc 和 gRpc 简介汇总

SQL introduction of the first lecture -- MySQL 8.0.29 installation tutorial (Windows 64 - bit)
随机推荐
Boutique: Taobao/Tmall Get Order Details API for Purchased Products
小程序毕设作品之微信积分商城小程序毕业设计成品(6)开题答辩PPT
Let's learn the layout components of flutter together
解决编译安装gdb-10.1 unistd.h:663:3: error: #error “Please include config.h first.“ 问题
小程序毕设作品之微信积分商城小程序毕业设计成品(1)开发概要
ospf 综合实验(重发布,特殊区域)
golang中如何比较struct,slice,map是否相等以及几种对比方法的区别
小程序毕设作品之微信二手交易小程序毕业设计成品(5)任务书
Mini Program Graduation Works WeChat Second-hand Trading Mini Program Graduation Design Finished Work (2) Mini Program Function
Smart answer function, CRMEB knowledge payment system must have!
小程序毕设作品之微信二手交易小程序毕业设计成品(3)后台功能
Usage of exists in sql
智能答题功能,CRMEB知识付费系统必须有!
Pytorch framework learning record 7 - convolutional layer
小程序毕设作品之微信二手交易小程序毕业设计成品(7)中期检查报告
Mini Program Graduation Works WeChat Points Mall Mini Program Graduation Design Finished Work (7) Interim Inspection Report
【驱动】udev设置GPIO加载后所有者、所属组和权限
对均匀采样信号进行重采样
Pytorch框架学习记录6——torch.nn.Module和torch.nn.functional.conv2d的使用
spicy(一)基本定义