13.RedHat认证-Linux Shell脚本

13.RedHat认证-Linux Shell脚本

Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。

bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写

sh:由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。

另外还有:ash、 csh、 ksh等

# 查看系统版本
[root@nfs-server ~]# cat /etc/centos-release 
CentOS Stream release 8# 查看内核版本信息
[root@nfs-server ~]# uname -a  # -a 是all的意思
Linux nfs-server 4.18.0-552.1.1.el8.x86_64 #1 SMP Fri Apr 26 18:59:23 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux# 查看当前系统使用的解释器
[root@nfs-server ~]# echo $SHELL
/bin/bash# 查看系统支持的shell解释器有哪些
[root@nfs-server ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash# 查看文件的大小或者目录的大小(以人类可读的方式)# 查看文件大小
[root@nfs-server ~]# du -h anaconda-ks.cfg 
4.0K    anaconda-ks.cfg#查看目录大小
[root@nfs-server opt]# ls
admin-test
[root@nfs-server opt]# du -h admin-test/ | sort -hr  # -h 人类可读的方式,-r 是从大到小排序

shell脚本初体验

# 建议加上后缀.sh,这样会有高亮显示
vim ./hello.sh
----------------------------
#!/bin/bash  
echo "hello world!!!!"
----------------------------
#!/bin/bash 
# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;# 执行脚本的几种方式
sh hello.sh  # 指定解释器执行该脚本。
bash hello.sh  #指定解释器执行该脚本
#请注意:指定解释器执行该脚本是不需要加上执行权限的。# 如果不指定解释器,那么就得赋予执行权限,然后以绝对路径或者相对路径执行脚本即可
chmod +x hello.sh
./hello.sh # 相对路径执行
/opt/hello.sh # 绝对路径执行
[root@nfs-server opt]# ./hello.sh 
hello world!!

shell变量

自定义变量

[root@nfs-server ~]# var=aaa # 自定义变量
[root@nfs-server ~]# echo $var  # 加上$ 输出变量的值
aaa
shell中,变量只能以字母或_开头,不能以数字开头,可以有特殊字符,但只能是 '_'#shell中一般我们定义变量是大写字母。
#小写字母有可能会和Linux命令冲突问题。
test="hello"
等号两边不能有空格。

特殊变量

#1.列出当前shell的进程ID
[root@nfs-server ~]# echo $$
3137
[root@nfs-server ~]# ps aux | grep bash
root        3137  0.0  0.7 226436  5404 pts/1    Ss   20:41   0:00 -bash
root        3374  0.0  0.1 222016  1112 pts/1    S+   21:01   0:00 grep --color=auto bash#2.$?能列出上次命令执行的状态#$?=0 是执行成功的标志,非0 就是不成功的标志
[root@nfs-server ~]# ls
anaconda-ks.cfg  hello.sh  initial-setup-ks.cfg  
[root@nfs-server ~]# echo $?
0# 3. 特殊变量演示
#!/bin/bash
#$0 表示脚本文件的执行路径,大多数情况会列出脚本的名字
echo "文件名: $0"
#$1表示传给脚本的第一个参数(后面的第二个参数等以此类推)
echo "第一个参数: $1"
#$#表示传给脚本参数的数量
echo "参数数量 $#"[root@nfs-server opt]# ./demo.sh 111
文件名: ./demo.sh
第一个参数: 111
参数数量 1

环境变量

系统环境变量
系统环境变量强烈建议没事不要改,他是保证系统稳定运行的关键。
#uptime列出系统运行时间
[root@nfs-server opt]# uptime 21:56:00 up  2:43,  2 users,  load average: 0.02, 0.02, 0.00# env 列出系统环境变量
[root@nfs-server opt]# env

条件判断

# 1.判断上一条ls命令是否执行成功
#!/bin/bash
ls
if [ "$?" == 0 ];thenecho "command execute success"
elseecho "command execute fail"
fi[root@nfs-server opt]# ./demo1.sh 
admin-test  demo1.sh  demo.sh
command execute success# 2. bash -x 可以列出脚本执行过程, 方便调试代码。
[root@nfs-server opt]# bash -x demo1.sh 
+ ls
+ '[' 0 == 0 ']'
+ echo 'command execute success'
command execute success# 3.判断文件是否存在 -f 就是判断文件是否存在的命令。
[root@nfs-server opt]# cat if.sh 
#!/bin/bash
if [ -f demo.sh ];thenecho "文件存在"
else echo "文件不存在"
fi
root@nfs-server opt]# ./if.sh 
文件存在# 4.一个简单的ping 脚本
[root@nfs-server opt]#  cat ping.sh 
#!/bin/bash
ping -c 1 "$1" &>>/dev/null
if [ "$?" == 0 ];thenecho "$1 ping is success!!!"
elseecho "$1 ping is fail"
fi

shell脚本的连接符

&& ||   逻辑运算符
&& 前后条件同时满足才为true
|| 前后条件满足一个即为true[root@nfs-server ~]# ping -c 1 www.baidu.com &>>/dev/null && echo "baidu ip upping"
baidu ip upping

shell脚本的分支语句

vim case.sh
------------------------------------
echo 'Input a number between 1 to 4'
echo 'Your number is:\c'
read aNum # 读入一个值
case $aNum in 
1) echo 'You select 1';;
2) echo 'You select 2';;
3) echo 'You select 3';;
4) echo 'You select 4';;
*) echo 'You do not select a number between 1 to 4';;
esac   # 以esac结尾
--------------------------------------------

shell 脚本的循环

# for循环
#!/bin/bash
for i in {1..254}
doping 10.6.110.$i -c 1 &>>/dev/null && echo "$i is up" || echo "$i is down" &  # & 表示在后台执行。
done
wait
# wait是等循环执行完毕,再退出循环。(后台实际上是并行执行这些ping 操作的)

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

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

相关文章

用大白话讲懂ceph与clinder的区别

Ceph是一个大仓库,而clinder只是食堂openstack的一个存储组件 详细解释如下: 当我们需要存储大量数据的时候,比如照片、视频、文件等,Ceph就像是一个巨大的仓库,可以帮助我们把这些数据安全地存放起来。 Ceph与传统的…

ABP框架+Mysql(二)

展示页面--图书列表页面 本地化 开始的UI开发之前,我们首先要准备本地化的文本(这是你通常在开发应用程序时需要做的).本地化文本在前端页面会常用。 本地化文本位于 Acme.BookStore.Domain.Shared 项目的 Localization/BookStore 文件夹下: 打开 en.json (英文翻译)文件并更…

STM32-- GPIO->EXTI->NVIC中断

一、NVIC简介 什么是 NVIC ? NVIC 即嵌套向量中断控制器,全称 Nested vectored interrupt controller 。它 是内核的器件,所以它的更多描述可以看内核有关的资料。M3/M4/M7 内核都是支持 256 个中断,其中包含了 16 个系统中…

MySQL—函数—数值函数(基础)

一、引言 首先了解一下常见的数值函数哪些?并且直到它们的作用,并且演示这些函数的使用。 二、数值函数 常见的数值函数如下: 注意: 1、ceil(x)、floor(x) :向上、向下取整。 2、mod(x,y):模运算&#x…

Kmeans聚类模型

K均值(K-Means)聚类是一种常用的无监督学习算法,用于将数据集中的样本划分为K个不同的簇(cluster),使得每个样本都属于距离最近的簇的中心。K均值聚类的目标是通过最小化簇内样本的方差或欧氏距离的平方和来确定簇的中心,从而实现聚类分析。 一、Kmeans聚类模型原理 随…

CTF本地靶场搭建——GZ:CTF基础使用

GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台。 简介 GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台,采用 Docker 或 K8s 作为容器部署后端,提供了可自定义的题目类型、动态容器和动态分值功能。 本项目缘起于作者认为 CTFd 的实现不优雅&a…

Photoshop 首选项设置建议

Windows Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K macOS Ps菜单:Photoshop/首选项 Photoshop/Preferences 快捷键:Cmd K 对 Photoshop 的首选项 Preferences进行设置,可以提高修图与设计效率。下面是一些…

burp插件new_xp_capcha识别验证码的简易安装

1.new_xp_capcha 插件是大佬开发的可以正常白嫖,感谢大佬,我找了个不需要任何高级操作就可以做的安装手法,因为我在网上搜了一下就发现这个的安装过程攻略都还蛮复杂,我这里用了个简单的手法 2.安装 下载地址:smxia…

用Python获取Windows本机安装的所有应用程序的实现与分析

一个项目中需要获取本机安装的所有应用程序列表,花了一点时间研究了一下,分享出来。 主要通过访问注册表和桌面快捷方式来完成这一任务,因为注册表中获取到的应用程序列表不完全,因此通过桌面快捷方式进行补充。 导入所需模块 im…

上网是不是必须路由器和光猫之一负责拨号?

链接:https://www.zhihu.com/question/624856022/answer/3245182557 上网并非一定要“拨号”,使用固定IP地址可以直接上网,不需要拨号。你们公司的宽带属于商用宽带,运营商(电信)给配置了固定的IP&#…

Python面试宝典:Python中与单元测试相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第二十章:测试和调试:第一节:单元测试】 第二十章:测试和调试第一节:单元测试单元测试的关键概念:Python中的单元测试工具:使用unittest模块编写单元测试的基本步骤:示例代码面试…

不同程序猿的六一表情

初级 中级高级资深#猿脑2.0

小程序模板开发与定制开发的对比

一、引言 随着移动互联网的快速发展,小程序作为一种轻量级的应用形态,已经深入到人们的日常生活和工作中。小程序以其无需安装、即用即走的特点,受到了广大用户的青睐。在小程序开发领域,模板开发和定制开发是两种常见的开发方式…

Linux: network: arp 导致问题一例

最近读openswitch的文档,看到下面一段话,说所有的CFM/BFD等协议,ARP修改相关的包都会经过slowpath/慢路径处理。 Performance Open vSwitch has a concept of a “fast path” and a “slow path”; ideally all packets stay in the fast pa…

[补题记录]LeetCode 6.Z字形变换

传送门:Z字形变换 转自:Z字形变换 Thought/思路 关键点在于,最后的答案是一行行连接起来的。 这样我们就会发现,这个 Z 字,实际上会让行数 不断加 1,然后又 不断减 1。每次按顺序选择 S 中的一个字符即…

基于C#使用ACCESS数据库时遇到的问题记录

一、32位版本Office与64位AccessDatabaseEngine共存安装方法 1. 使用winrar、7zip等软件将AccessDatabaseEngine_X64.exe解压缩,得到AceRedist.msi和files14.cat2个文件 2. 下载Orca MSI编辑修改工具。安装后,使用Orca打开AceRedist.msi,找到…

【JavaScript脚本宇宙】工具箱必备:文件处理库

不可或缺的开发工具:卓越的JavaScript文件操作库 前言 在这篇文章中,我们将深入探讨六个强大的JavaScript库,它们各自具有独特的功能和特性,能够极大地提升开发者的生产力。这些库包括用于客户端保存文件的库、CSV解析生成库、创…

【故障诊断】基于改进型的节点重构小波包频带能量谱结合概率神经网络 PNN实现轴承联合故障诊断附matlab代码

以下是基于改进型节点重构小波包频带能量谱结合概率神经网络(Probabilistic Neural Network, PNN)实现轴承联合故障诊断的MATLAB代码示例: matlab % 步骤1:节点重构小波包频带能量谱提取特征 function features extractFeatures…

LabVIEW在喷灌系统中的自动化实现

自动化喷灌系统在农业和园艺中有着广泛应用,可以显著提高水资源利用效率和作物产量。本文将介绍如何利用LabVIEW平台实现喷灌系统的自动化控制,涵盖项目背景、系统组成与特点、实现过程和优势。 项目背景 传统的喷灌系统通常依赖人工操作,效…

IF:83.5!一作兼通讯,​Nature系列综述:可以吃的机器人!

在当今科技与生物工程快速融合的时代,传统领域之间的界限正在逐渐模糊,创造了许多前所未有的创新机会。机器人设计与食品加工这两个看似无关的研究领域,正在通过材料特性、制造工艺和功能的交叉融合,展现出巨大的潜力。 可食用机器…