当前位置:网站首页>Shell 脚本 快速入门 -01
Shell 脚本 快速入门 -01
2022-07-29 02:03:00 【51CTO】
1 Shell概述
1.1 为什么要学习shell
1.2 shell概述
2 Shell解析器
3 Shell脚本入门
3.1 脚本格式
3.2 创建一个Shell脚本
3.3 多命令处理
4 Shell中的变量
4.1 系统变量
4.2 自定义变量
4.3 特殊变量:$n
4.4 特殊变量:$#
4.5 特殊变量$*
4.6 特殊变量$?
5 运算符
6 条件判断
1 Shell概述
1.1 为什么要学习shell?
- 需要看懂运维人员的编写的shell编程
- 偶尔会需要编写shell管理集群,从而提高开发效率
1.2 shell概述

Shell介于Linux内核与外层应用程序之间
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核
Shell是一个强大的编程语言,易编写,易调试,灵活性强。
2. Shell解析器
- Linux提供的Shell解释器有
- sh和bash的关系,sh是bash的软链接
- Centos默认的解释器是bash
3 Shell脚本入门
3.1 脚本格式
以#!/bin/bash开头
3.2 创建一个Shell脚本
- 创建一个shell脚本,,并输出helloworld
- 写入脚本内容
- 执行shell脚本
用sh
用bash
来一个绝对路径看看
用./试试看,发现不行,原因是原来是通过sh或者bash解析器执行,但是现在是自己的权限执行,没有x权限
因此修改权限
3.3 多命令处理
在/home/fenfen/目录下创建一个banzhang.txt在banzhang.txt文件中增加“I love lili”
- 创建shell脚本
- shell脚本内容
- 执行脚本并查看结果
4 Shell中的变量
4.1 系统变量
- 常用系统变量
- $HOME:查看用户地主目录
- $PWD:查看当前目录
- $SHELL:查看默认解析器
- #USER:查看当前用户
- 原理就是将这些封装为变量
4.2 自定义变量
- 基本语法:变量=值
- 注意:变量的值可以改变,再赋值就变啦
- A=1中间不给空格
- 撤销变量:unset 变量
- 声明一个静态只读变量:readonly 变量
- 但是不给unset
- 变量定义规则
变量名称可能由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
等号两侧不能有空格
变量默认类型都是字符串类型,无法直接进行数值运算
- 变量的值如果有空格,需要使用双引号和单引号括起来
- 全局变量
如果把变量提升为全局变量export,可供其他Shell程序使用
- shell脚本中增加
- 但是因为不属于同一个进程,并且D是局部变量,所以用shell打印不出
- 所以升级为全局变量就有了
4.3 特殊变量:$n
$n:n为数字,并且0表示该脚本名称,1-9表示第一个到第九个参数,十以上的参数需要用大括号包含
${10},一般不超过5个
实例
- 创建一个sh文件
- shell脚本写一个
- 执行下,会出来$0
- 给个参数执行
4.4 特殊变量:$#
基本语法:$# 获取所有输入参数的个数,常常用于循环中
实例
- Shell脚本
- 执行包含$#的脚本结果
- 给个参数
4.5 特殊变量$*
- 基本语法
$*:这个变量代表命令行中所有的参数,把所有的参数看成一个整理
[email protected]:这个变量也代表命令行中所有的参数,不过是把每个参数区分对待
- 实例
- 写入shell脚本
- 执行看看,最后虽然结果一样,可是[email protected]表示内核还是一个一个的
4.6 特殊变量$?
- 基本语法:最后一次执行命令的返回状态。如果这个变量的值为0,表上上一个命令执行正确,如果这个变量的值为非0,则上一个命令不正确
- 实例
5 运算符
- 基本语法
- $((运算式))
- $[运算式]
- expr +,-,*,/,% 加减乘除取余 expr运算符间要有空格
- 实例
- 2+3先运算记得`一下
- 使用[]计算
6 条件判断
- 基本语法:[ condition ] condition 前后要有空格哦
条件非空即为true,[]会返回false
- 常用判断条件
- 字符串比较
- -lt小于
- -le小于等于
- -eq等于
- -gt大于
- -ge 大于等于
- -ne不等于
- 文件权限判断
- -r 有读的权限
- -w有写的权限
- -x有执行的权限
- 按照文件类型进行判断
- -f 文件存在并且是一个常规文件file
- -e文件存在existence
- -d文件存在并且是一个目录directory
- 多条件判断
- &&表示前一条成功,才执行后一条
- ||表示前一条失败,才执行后一条
- 实例
- 23是否大于等于22
- helloworld 是否具有写权限
- 目录的文件是否存在
- 多条件判断
边栏推荐
- Jmeter之BeanShell生成MD5加密数据写入数据库
- Chapter 3 business function development (deletion and modification of clue remarks)
- 3d智能工厂工艺流转可视化交互展示应用优点
- NPM install reports an error: eperm: operation not permitted, rename
- Summary of knowledge points of Engineering Economics
- Branch management practice of "two pizza" team
- Kbxxxxx is not necessarily a patch, but also a description of a solution to a problem
- Esbuild Bundler HMR
- 如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
- MySQL和Redis的双写一致性
猜你喜欢

How to quickly design a set of cross end components that support rendering rich text content

当我看源码的时候,我在想什么?

Object based real-time spatial audio rendering - Dev for dev column

千万不要把Request传递到异步线程里面,有坑

【质量】代码质量评价标准

The outsourcing company "mixed" for two years, and I only did five things seriously. Now I get byte offer smoothly.

会议OA之会议通知

How does the Devops team defend against API attacks?

Esbuild Bundler HMR

XSS靶场(二)xss.haozi
随机推荐
time_wait和close_wait产生原因
详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await
Responsive dream weaving template home decoration website
When I look at the source code, what am I thinking?
Responsive dream weaving template hotel room website
Virsh console connection failure
如何在多御安全浏览器中自定义新标签页?
JMeter's BeanShell generates MD5 encrypted data and writes it to the database
聊聊 Feign 的实现原理
Code implementation - the greatest common factor of polynomials (linear algebra)
I want to talk about high concurrency.
无线振弦采集系统工作流程
Code random notes_ Hash_ 349 intersection of two numbers
[upload pictures can be cut-1]
2022/07/28 学习笔记 (day18) 常用API
QT qstackedwidget multi interface switching
HTTP断点续传以及缓存问题
Teach you how to install vscode by hand (with illustrated steps)
当我看源码的时候,我在想什么?
ES6详解 快速上手!