shell编程一

shell 定义

Shell 也是一种程序设计语言,它有变量,关键字,各种控制语句,有自己的语法结构,利用shell程序设计语 可以编写功能强、代码简短的程序
#! Shebang 定义解释器

shell的分类和切换

# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
默认shell: bash shell
centos中脚本使用的默认shell 为/usr/bin/sh  
查看当前正在使用的shell
#echo $SHELL
shell 的切换
#vim /etc/passwd   编辑更改登录shell的类型

使用场景

什么时候不适合使用Shell编程:
    1. 资源紧张的项目,特别是那些速度是重要因素的地方(排序,散序,等等)
    2. 程序要进行很复杂的数学计算,特别是浮点计算,任意精度的计算,或者是复数计算
    3. 要求交叉编译平台的可移植性(使用C或者是Java代替)
    4. 需要结构化编程的复杂应用(需要变量类型检查和函数原型等等)
    5. 对于影响系统全局性的关键任务应用。
    6. 安全非常重要。你必须保证系统完整性和抵抗入侵,攻击和恶意破坏。
    7. 项目由连串的依赖的各个部分组成。
    8. 多种文件操作要求(Bash被限制成文件顺序存取,并且是以相当笨拙,效率低下的逐行的存取方式) 9. 需要良好的多维数组支持。
    10. 需要类似链表或树这样的数据结构。
    11. 需要产生或操作图象或图形用户界面。
    12. 需要直接存取系统硬件。
    13. 需要端口号或是socket I/O。
    14. 需要使用可重用的函数库或接口。
    15. 所有的私有的不开源的应用程序(Shell脚本的源代码是直接可读,能被所有人看到的)
        如果你需要有上面的任意一种应用,请考虑其他的更强大的脚本语言――Perl,Tcl,Python,Ruby,或者可能是其他更 高级的编译型语言,例如C,C++或者是Java

Shell 能做什么?

1. 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略...)
2. 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)
3. 应用管理程序 (KVM,集群管理扩容,MySQL,DELLR720批量RAID)
4. 日志分析处理程序(PV, UV, 200, !200, top 100, grep/awk)
5. 自动化备份恢复程序(MySQL完全备份/增量 + Crond)
6. 自动化管理程序(批量远程修改密码,软件升级,配置更新)
7. 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL) 8. 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
8. 自动化扩容(增加云主机——>业务上线)
zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机) + Shell Script(业务上 线)
9. 俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序实现 
10. Shell可以做任何运维的事情(一切取决于业务需求)

bash 初始化

用户登录时相关的bash配置文件 (登录脚本)
全局配置文件
  /etc/profile 
  /etc/profile.d/*.sh 
  /etc/bashrc
个人配置文件
  ~/.bash_profile
  ~/.bashrc
  
profile类的文件: 设定环境变量
    运行命令或脚本
bashrc类的文件: 
    定义命令别名
    
用户登录时加载bash配置文件的过程
登录式shell加载配置文件优先级显示
    ~/.bash_profile --> ~/.bashrc --> /etc/bashrc    --> /etc/profile --> /etc/profile.d/*.sh 
    
非登录式shell加载配置文件优先级显示
        ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

shell 脚本执行规范

shell脚本文件需要以.sh结尾
第一个原因,让别人认的这个是shell脚本,sh后缀编辑时有高亮显示。
拓展名后缀,如果省略.sh则不易判断该文件是否为shell脚本
# 执行脚本方式
1、 sh 脚本.sh
2、 bash 脚本.sh
3、 ./脚本.sh  # 需要执行权限
4、 .  脚本.sh
5、 source 脚本.sh  子影响父,改变当前shell环境

sh 和 source的区别:
    sh:当使用sh来执行脚本时,它会创建一个新的子进程来执行脚本,并且脚本中的变量和环境设置通常不会影响当前的shell环境
    source:使用source或.来执行脚本文件时,脚本中的命令会在当前Shell环境中执行,并且脚本可以修改当前Shell的变量和环境设置。

编辑脚本
#cat a.sh
#!/bin/bash
pwd
cd /opt
pwd
更换执行脚本方式执行显示如下

希望能够帮助到大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言学习----存储类别

存储类别 🌿本文是C Primer Pluse 中文版第12章的部分内容整理 🌱主要是围绕C中作用域 链接 存储期 展开 ,是后面进行多文件管理的基础~ 🌈概要 🍎明确对象 变量名 标识符的基本概念和含义 🍐作用域和链接描…

ES6之Reflect详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

2023年度学习总结

想想大一刚开始在CSDN写作,这一坚持,就是我在CSDN的第九个年头,这也是在CSDN最有里程碑的一年,这一年我被评为CSDN的博客专家啦!先是被评为Unity开发领域新星创作者,写的关于一部分Unity开发的心得获得大家…

ES应用_ES实战

依靠知识库使用es总结一些使用技巧。 1 快速入门 ES是将查询语句写成类似json的形式,通过关键字进行查询和调用。 1.1 创建 下面创建了一个主分片为5,副本分片为1的ES结构。ES本身是一种noschema的结构,但是可以通过指定mapping编程schema的…

【深度学习:Convolutional Neural Networks】卷积神经网络入门指南

【深度学习:Convolutional Neural Networks】卷积神经网络入门指南 介绍为什么选择ConvNets而不是前馈神经网络?Input Image 输入图像基本架构Convolution Layer 卷积层 — 内核Pooling Layer 池化层Classification — Fully Connected Layer (FC Layer)…

如何加入到接单的大家庭,这个方法很简单~!方法A

第一步: 进某宝 搜 C语言代写 然后点销量 你把前4名的客服找到 问他们是某招技术 如果他们乐意,你就进他们的圈子。

Mybatis底层原理分析以及源码阅读

费话不多少先上图,我只喜欢画图分析,看图片: 有两个问题: 问题1: 我们一直在写Mapper/DAO只写了接口,没有写具体的实现吧? 【是的】 问题2: 没有写实现类就没办法实例化执行后续的操…

基于Matlab的各种图像滤波Filter算法(代码开源)

前言:本文为手把手教学 Matlab 平台下的各种图像滤波算法的教程,将编程代码与图像滤波知识相联系,以实战为例!博客中图像滤波算法包含:均值滤波、中值滤波、高斯滤波、双边滤波、引导滤波。图像滤波算法是计算机视觉领…

【Spring】AOP原来如此

AOP概述 什么是AOP的技术? 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构AOP最早由AOP联盟的组织提出的,制定了一套…

摩尔线程S80对于软件的支持

摩尔线程对软件的支持 时间:2024年1月1日 显卡型号:MTT S80 主板型号:七彩虹 igame z590 火神 V20 CPU: intel core i5 10400f 内存: 海盗船3600 16*2 存储: 致态1Tb nvme 显卡的驱动是最新的。 游戏 S…

C/C++ 函数重载

函数多态是C在C语言的基础新增的功能。默认参数能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让您能够使用多个同名的函数。术语“多态”指的是有多种形式,因此函数多态允许函数可以有多种形式。类似地,术语“函数重载”指的是…

华为云创新中心,引领浙南的数字化腾飞

编辑:阿冒 设计:沐由 县域经济是我国国民经济的重要组成部分,是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中,县域经济扮演的角色也越来越重要。 毫无疑问,县域经济的良性发展,需要多方…

数据的确权、流通、入表与监管研究(一):数据与确权(下)

关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光大银行-《商业银行数据资产会计核算研究报告》 3. 回复关键字…

【NLP论文】02 TF-IDF 关键词权值计算

之前写了一篇关于关键词词库构建的文章,没想到反响还不错,最近有空把接下来的两篇补完,也继续使用物流关键词词库举例,本篇文章承接关键词词库构建并以其为基础,将计算各关键词的 TF-IDF 权值,TF-IDF 权值主…

软件工程PPT 笔记摘录(2)

分析软件需求 UML 提供了用例图来分析和描述用例视角的软件需求模型 UML 提供了交互图和状态图来描述行为视角的软件需求模型 UML 提供了类图来描述和分析业务领域的概念模型 顺序图:强调消息传递的时间序 通信图:突出对象间的合作 类图&#xff0…

掌握C++11标准库(STL):理解STL的核心概念

深入探索C11标准库STL:新特性和优化技巧 一、前言二、容器简介三、迭代器简介四、map与unordered_map(红黑树VS哈希表)4.1、map和unordered_map的差别4.2、优缺点以及适用处4.3、小结 五、总结 一、前言 STL定义了强大的、基于模板的、可复用…

python设计模式:模板方法模式

更多Python学习内容:ipengtao.com 软件设计和编程中,设计模式是一种有助于解决常见问题的强大工具。其中之一是"模板方法模式",它是一种行为型设计模式,允许你定义一个算法的骨架,但将一些步骤的具体实现延迟…

win11 电脑睡眠功能失效了如何修复 win11 禁止鼠标唤醒

1、win11睡眠不管用怎么办,win11电脑睡眠功能失效了如何修复 在win11系统中拥有许多令人激动的新功能和改进,有些用户在使用win11电脑时可能会遇到一个问题:睡眠模式不起作用。当他们尝试将计算机置于睡眠状态时,却发现系统无法进…

HarmonyOS应用程序包快速修复

快速修复概述 快速修复是HarmonyOS系统提供给开发者的一种技术手段,支持开发者以远快于应用升级的方式对应用程序包进行缺陷修复。和全量应用升级软件版本相比,快速修复的主要优势在小、快和用户体验好。在较短的时间内不中断正在运行的应用的情况下&am…

SpringBoot + Vue 抖音全平台项目

简介 本项目是一个短视频平台,拥有热度排行榜,热门视频,兴趣推送,关注推送,内容审核等功能。 源码下载 网盘 (访问密码: 8418) 登录/注册 首页 创作中心 架构设计 上传视频业务流程 视频推送流程 1.用户订阅分类后…