【网络安全】—Shell编程入门(1)

文章目录

    • 基础
    • 变量概念介绍
    • 特殊变量进阶
    • 数值计算实践
    • 条件测试比较
    • 条件判断语句
    • 流程控制语句
    • 循环语句应用

Shell 是 Unix/Linux 操作系统下的一种命令行解释器,它接收用户输入的命令然后调用相应的程序。我们可以通过 Shell 脚本来自动执行一系列的命令。接下来,我们将详细介绍 Shell 编程的基本概念和技能。

基础

Shell编程是一种脚本编程语言,它运行在Unix和Linux系统上的命令行终端中。Shell编程可以用来操作文件、处理文本、管理进程、配置系统等,是Unix和Linux系统中非常重要和常用的工具之一。

Shell编程语言主要有两类:Bourne shell和C shell。其中,Bourne shell(/bin/sh)是Unix系统默认的命令行解释器,它支持命令替换、变量引用、逻辑运算、循环和分支等基本语法。而C shell(/bin/csh)则是另一种常见的Shell编程语言,它与Bourne shell类似,但更加易用和人性化。

Shell编程语言的基本语法非常简单,主要由命令和参数组成。例如,ls命令用于列出当前目录下的文件和子目录:

ls

其中,ls是命令,没有参数时表示列出当前目录下的所有文件和子目录。

Shell编程还支持变量、条件判断、循环和函数等高级语法。例如,使用变量可以将命令的输出保存到变量中,便于后续操作:

files=$(ls)
echo $files

其中,$(ls)将会执行ls命令并将结果保存到files变量中,echo命令用于输出变量的值。

条件判断可以使用if语句实现,例如:

if [ $var -gt 10 ]
then
  echo "var is greater than 10"
else
  echo "var is less than or equal to 10"
fi

其中,$var是一个变量,-gt表示大于,-le表示小于或等于。

循环可以使用for和while语句实现,例如:

for i in $(seq 1 10)
do
  echo $i
done

其中,$(seq 1 10)将会生成一个从1到10的数字序列,并使用for循环依次输出每个数字。

Shell编程还支持函数定义和调用,例如:

function hello() {
  echo "Hello, World!"
}

hello

其中,hello()定义了一个名为hello的函数,echo用于输出一条消息,hello函数的调用则在最后一行实现。

总之,Shell编程是一种强大而灵活的编程语言,它可以快速地实现各种系统管理和自动化任务,减少人工操作和提高工作效率。掌握Shell编程对于Unix和Linux系统的管理和运维人员来说是必不可少的技能。

变量概念介绍

在 Shell 中,变量是用来存储信息的。我们可以通过变量名来获取存储的信息。例如,我们可以创建一个名为 greeting 的变量,并赋值为 “Hello, World”:

greeting="Hello, World"
echo $greeting

在这个例子中,我们使用了 echo 命令来输出变量 greeting 的值。注意,当我们想要获取变量的值时,我们需要在变量名前面加上 $ 符号。

特殊变量进阶

Shell 提供了一些特殊的变量,这些变量在 Shell 脚本中有特殊的含义。

  • $0:当前脚本的文件名。
  • $n:传递给脚本或函数的参数。n 是一个数字,表示第 n 个参数。例如,$1 表示第一个参数。
  • $#:传递给脚本或函数的参数个数。
  • $*:所有参数列表。"$*" 是一个整体,所有参数作为一个字符串。
  • $@:所有参数列表。"$@" 是分开的,每个参数都是独立的字符串。
  • $?:上个命令的退出状态。0 表示没有错误,其他任何值表明有错误。

数值计算实践

Shell 提供了几种方式来进行数值计算。其中最常见的是使用 exprlet 命令。例如:

# 使用 expr
sum=`expr 2 + 2`
echo "The sum is $sum"

# 使用 let
let sum=2+2
echo "The sum is $sum"

注意,expr 命令的操作符两边必须有空格。

条件测试比较

我们可以使用 test 命令来进行条件测试。例如,我们可以比较两个数值是否相等:

num1=10
num2=20
if test $num1 -eq $num2
then
    echo "The numbers are equal"
else
    echo "The numbers are not equal"
fi

在这个例子中,-eq 是一个比较操作符,表示等于。

条件判断语句

我们可以使用 ifelseelif 等关键词来进行条件判断。例如:

num=10
if [ $num -gt 5 ]
then
    echo "The number is greater than 5"
elif [ $num -eq 5 ]
then
    echo "The number is equal to 5"
else
    echo "The number is less than 5"
fi

流程控制语句

除了 if 语句,我们还可以使用 case 语句来进行多条件判断。例如:

echo "Enter a number:"
read num
case $num in
    1) echo "You entered one.";;
    2) echo "You entered two.";;
    *) echo "You did not enter one or two.";;
esac

循环语句应用

Shell 提供了 forwhileuntil 等循环语句。例如:

# for loop
for i in 1 2 3 4 5
do
   echo "Welcome $i times"
done

# while loop
count=1
while [ $count -le 5 ]
do
   echo "Welcome $count times"
   let count=count+1
done

# until loop
count=1
until [ $count -gt 5 ]
do
   echo "Welcome $count times"
   let count=count+1
done

以上就是 Shell 编程的基本概念和技能。通过学习这些,你应该能够编写一些简单的 Shell 脚本来自动化你的工作。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 导入ucharts图表插件 H5项目, 使用echarts eopts配置

先下载ucharts H5示例源码: uCharts: 高性能跨平台图表库,支持H5、APP、小程序(微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序)、Vue、Taro等更多支持canvas的框架平台&#…

浪潮信息KOS服务器操作系统:经过周密考虑后的智慧之选

文章目录 一、引言二、服务器操作系统概述三、选择服务器操作系统的关键因素四、评估服务器操作系统的标准五、选择服务器操作系统的实践经验六、浪潮信息KOS服务器操作系统一、稳定可靠二、高效协同三、全天候运维四、广泛兼容 七、总结与展望 浪潮信息信息KOS是浪潮信息信息基…

HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】

一.HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】 1.1 项目背景 HarmonyOS(鸿蒙操作系统)是华为公司推出的一种分布式操作系统。它被设计为一种全场景、全连接的操作系统,旨在实现在各种设备之间的无缝协同和共享,包括智能手机、平板电脑、智能…

需求:通过按钮的点击事件控制另一个输出框/按钮的点击

目录 第一章 接到需求 第二章 了解需求 第三章 解决需求 第四章 优化代码 第五章 解决问题 第一章 接到需求 最近开发的时候遇到这么一个事,技术经理是个全栈,已经把接口生成了,而且前端页面也写好了一个初稿,操作什么的功…

Flex布局下居中滚动溢出

摘要: 遇到一个需求,在uniapp swiper下实现轮播图,图片的高度是自适应的,超出屏幕设备的高度的时候,滚动显示全部,图片的高度没有超过屏幕的高度时候,上下居中于屏幕的中间!下面写了…

长短期记忆(LSTM)神经网络-多输入回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分程序: 四、完整代码数据下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编…

2023中国品牌节金谱奖荣誉发布 酷开科技获颁OTT行业科技创新奖

11月17日—19日,以“复苏与腾飞”为主题的2023第十七届中国品牌节,在杭州市云栖小镇国际会展中心成功举行。在18日晚间的荣耀盛典上,“TopBrand 2023中国品牌节金谱奖”荣誉发布,酷开科技斩获OTT行业科技创新奖。 酷开科技作为OTT…

九牧:科技卫浴,长期主义

“没有做错什么,但却输给了时代”,这是人们给当年手机巨头诺基亚的注解。 谁也没有想到,曾在手机行业称雄的诺基亚,最终败给了时代。当年,在2G向3G、4G跨越的时候,苹果、微软的iOS和安卓系统将手机从简单的…

PHPStorm一站式配置

phpstorm安装好之后,先别急着编码。工欲善其事,必先利其器,配置好下面这些之后让编码事半功倍。 主题 Appearance & Behavior -> Appearance -> Theme 选中 [Light with Light Header] 亮色较为护眼 关闭更新 Appearance & …

什么是同源策略?

同源 同源指的是URL有相同的协议、主机名和端口号。 同源策略 同源策略指的是浏览器提供的安全功能,非同源的RUL之间不能进行资源交互 跨域 两个非同源之间要进行资源交互就是跨域。 浏览器对跨域请求的拦截 浏览器是允许跨域请求的,但是请求返回…

零刻EQ12 N100 双2.5G网口 All In One新手教程

零刻EQ12 N100 双2.5G网口 All In One新手教程 前言1.硬件配置2.准备工作2.1. ESXI8.0U2镜像2.2. Rufus磁盘工具下载2.3. ikuai镜像下载2.4. StarWindConverter虚拟磁盘格式转换工具下载2.5. OpenWrt镜像下载2.6. 黑群晖RR引导镜像下载(DSM7.2)2.7. 需要准备的硬件2.8. 格式化需…

《空气质量持续改善行动计划》发布,汉威科技助力蓝天保卫战

近日,国务院印发《空气质量持续改善行动计划》,这是继2013年“大气十条”之后的第三个国家层面的保卫蓝天行动计划。 计划要求协同推进降碳、减污、扩绿、增长,以改善空气质量为核心,以减少重污染天气和解决人民群众身边的突出大…

什么是云服务器ECS

云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资…

Python 爬虫之简单的爬虫(四)

爬取动态网页(下) 文章目录 爬取动态网页(下)前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取并保存4.保存文档 总结 前言 上篇主要讲了如何去爬取数据,这篇来讲一下如何在获取的同时将数据整…

机器学习 | 贝叶斯方法

不同于KNN最近邻算法的空间思维,线性算法的线性思维,决策树算法的树状思维,神经网络的网状思维,SVM的升维思维。 贝叶斯方法强调的是 先后的因果思维。 监督式模型分为判别式模型和生成式模型。 判别模型和生成模型的区别&#xf…

英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案

12月13-14日,“凝心聚力,共赢计算新时代”——2023计算产业生态大会在北京香格里拉饭店成功举办。英码科技受邀参加行业数字化分论坛活动,市场总监李甘来先生现场发表了题为《AI哨兵,为铁路安全运营站好第一道岗》的精彩主题演讲&…

PIL/Pillow

Abstract PIL(Python Imaging Library)是一个用于图像处理的 Python 库。它提供了广泛的功能,包括图像加载、保存、调整大小、裁剪、旋转、滤镜应用等。 由于 PIL 的开发停止在 2009 年,因此推荐使用其后续的维护版本 Pillow。Pillow 是一个兼容 PIL 接…

Vue3+el-table实现甘特图

Vue3 el-table实现甘特图效果 代码gitee 整体实现效果如下 进度列,可以通过设置天或小时,切换不同列显示类型。 涉及到的问题 1、通过Worker解决js线程堵塞问题 在根据时间动态生成列时,由于开始时间与结束时间跨度过大时,计…

【从服务器获取共享列表失败】【无法与设备或资源通信】解决方案!

【从服务器获取共享列表失败】背景: 某项目搭建有samba共享,使用一段时间后,不知何种原因,客户端链接共享时报:从服务器获取共享列表失败,无效的参数。 可参考解决方案A: 银河麒麟samba共享文…

vue3 环境变量

开发环境&#xff1a; .env.development VITE_HTTPhttp://www.baidu.com生成环境&#xff1a; .env.production VITE_HTTPhttp://www.jd.com获取环境里的值 <template></template><script setup lang"ts"> console.log(import.meta.env); <…