2.shell脚本基本操作及案例

news2025/1/12 9:57:19

本文介绍了shell脚本的基本建立过程,并举了4个案例。关键是例3的shell脚本检测局域网ip地址机器是否宕机,例4的shell脚本获取本机ip地址

一、第一个shell脚本

1、定义解释器

#!/bin/bash 
echo "hello world" 

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 shell,类似C语言中的#include
echo 命令用于向窗口输出文本

2、建立文件并赋予可执行权限

创建文件通过touch first.h,而后执行vim first.sh进行内容编辑。
注意刚创建的文件只有可读可写权限,不可执行
在这里插入图片描述
输入命令chmod +x first.sh
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性。因此这段代码是向first.sh加入可执行的权限
在这里插入图片描述

3、变量操作

1、定义变量

使用一个定义过的变量,只要在变量名前面加美元符号即可;并且变量名与等号之间不能有空格

echo "hello world"
x="www.0voice.com"
echo $x #或者echo ${domain}

在这里插入图片描述

2、删除变量

 #!/bin/bash
url="www.0voice.com"
unset url
echo $url

二、例子

1、输出路径下的所有目录

先看一下for 循环一般格式为:

for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
# 可以写成一行
for var in item1 item2 ... itemN; do command1; command2… done;

A、输出路径下的所有目录的命令

#!/bin/bash  
for file in $(ls /home/zxm/share/00_shell); do
     echo "${file}"
done

在这里插入图片描述
B、输出1 2 3 4 5的命令

#!/bin/bash 
for loop in 1 2 3 4 5
do
	echo "The value is: $loop"
done

在这里插入图片描述

2、实现从1到100的和

!#/bin/bash 
sum=0;
for i in {1..100};do
        let sum+=i
done
echo $sum

3、shell脚本实现检测局域网内哪些ip地址机器宕机

#!/bin/bash 
for i in {1..254};do
		# "&>/dev/null"表示不再屏幕上显示其他结果
        ping -c 2 -i 0.5 192.168.48.$i &>/dev/null  
        # "$?"用于获取上一条命令的执行结果,如成功返回0
        if [ $? -eq 0 ]; then
                echo "192.168.48.$i is up"
        else
                echo "192.168.48.$i is down"
        fi
done

4、shell脚本中获取本机ip地址

#!/bin/bash 
local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
echo "${local_ip}"
  • ifconfig -a \quad\quad //和window下执行此命令一样道理,返回本机所有ip信息
  • grep inet \quad\quad //截取包含ip的行
  • grep -v 127.0.0.1 \quad\quad //去掉本地指向的那行
  • grep -v inet6 \quad\quad //去掉包含inet6的行
  • awk { print $2} \quad\quad //$2 表示默认以空格分割的第二组,同理$1表示第一组​
  • tr -d “addr:” \quad\quad //删除"addr:"这个字符串

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

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

相关文章

[玩游戏想道理]底层能力提升

继续金铲铲中想道理; overview 很多熟悉的情况是调用记忆即可,但是新的情况则需要使用底层能力,包括不限于做事的方式倾向,对事物的深刻理解等等; 既有事情更多在调用和打磨记忆,新的事物更多调用和打磨底…

『C++』C++的IO流详解

「前言」文章是关于C的IO流 「归属专栏」C嘎嘎 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 就像山看水,水流山还在, 喜欢之人,只管远去, 我只管喜欢。 ——烽火戏诸侯《剑来》 目录 一…

留学热议话题:在美国可以用ChatGPT写作业吗?

今年,学术界最热议的话题要数人工智能技术非大语言数据模型ChatGPT了。随着ChatGPT等智能写作助手在学生群体中的应用和日益普及,极大程度地影响了学生们的传统学习方法。然而,在享受技术革新带来便利的同时,不恰当的运用这些软件…

rails routes的使用

Rails routes 是用于确定应该将请求发送到哪个控制器和操作的一种机制。在 Rails 应用程序中,可以通过定义路由来映射 URL 到控制器操作。可以使用 rails routes 命令查看当前应用程序中定义的所有路由。 以下是一些常见的用法: 查看所有路由&#xff…

从三个层次来介绍用于机器人主控板的设计思想

在很多人眼里,主控板有着密密麻麻的芯片引脚与PCB走线,看起来非常难的样子。其实恰恰相反,主控板的设计有着其特有的设计规律,其实说白了就像搭积木,在满足单片机最小系统的条件下,需要哪些功能&#xff0c…

chatgpt赋能Python-python_head_first

Python Head First:学习Python编程的必备指南 如果你是一位编程新手,尤其是对Python感兴趣,那么Head First Python是你需要阅读的书籍之一。这本书通过富有趣味性的教学方法,让你轻松理解Python编程语言。 了解Python编程 Pyth…

物联网通信协议-MQTT及使用python实现

MQTT概念及其原理 简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量 级"通讯协议,该协议构建于TCP/IP协议上,由IBM在…

亚马逊云科技构建Serverless数据分析战略

亚马逊云科技Amazon EMR是行业领先的大数据分析服务,适用于使用开源框架进行PB级数据处理、交互分析和机器学习,它可以更快地运行大数据应用并且成本不到本地解决方案成本的一半。通过性能优化且兼容开源API的Spark、Hive和Presto版本,洞察时…

增加或修改现有apk的功能(apk功能扩展)

现有apk不能满足需要,又没有源代码,想要扩展其功能,是可以实现的。 本人根据多年修改apk的经验,总结如下: 一、扩展apk功能的原理及步骤 1、必要条件: 该apk能够被反编译为smali代码,也能够…

【2023五一杯数学建模】B题 快递需求分析 31页论文

【2023五一杯数学建模】B题 快递需求分析 31页论文及代码 1 题目 请依据以下提供的附件数据和背景内容,建立数学模型,完成接下来的问题:问题背景是,网络购物作为一种重要的消费方式,带动着快递服务需求飞速增长&…

Spring源码阅读:Spring事务执行流程

一、概述 Spring事务执行的流程如下图,我们将按照下面的执行顺序,介绍Spring的事务。 二、代码分析 (一)核心流程 TransactionAspectSupport#invokeWithinTransaction 事务处理核心伪代码 // 通过事务调用 protected Object i…

第12届蓝桥杯Scratch选拔赛真题集锦

第12届蓝桥杯Scratch选拔赛真题集锦 编程题 第 1 题 问答题 吃豆人游戏 题目说明 编程实现: 吃豆人游戏: 通过方向键控制吃豆人吃到水果,当水果全部被吃掉后游戏结束。具体要求: 1).点击绿旗,舞台上出现要求的角色与背景;每个格子内有一个水果和一个幽…

chatgpt赋能Python-python_ip摄像头

Python IP摄像头介绍 IP摄像头技术的快速发展,使得越来越多的人开始使用IP摄像头来保护家庭、企业和公共场所的安全。Python语言的简洁、优雅和易于学习,使得它成为越来越多人选择的编程语言。在本文中,我们将介绍如何使用Python编程来控制I…

java循环依赖

java循环依赖 什么叫循环依赖? Java循环依赖是指两个或多个类之间存在相互依赖的情况,造成它们互相持有对方的实例而无法正确地加载和初始化。这种问题通常发生在使用Spring等依赖注入框架时,因为这些框架会自动管理类的实化和注入。 我们看…

深度学习基础入门篇[10]:序列模型-词表示{One-Hot编码、Word Embedding、Word2Vec、词向量的一些有趣应用}

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

机器学习神经网络——Adaboost分离器算法

系列文章目录 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 机器学习相关概念思维导图 文章目录 系列文章目录 前言 Adaboost算法的简单介绍 Adaboost算法相…

Unity之使用Photon PUN开发多人游戏教程

前言 Photon是一个网络引擎和多人游戏平台,可以处理其服务器上的所有请求,我们可以在 Unity(或其他游戏引擎)中使用它,并快速把游戏接入Photon的网络中,而我们就可以专注于在项目中添加逻辑,专注于游戏玩法和功能了。 PUN(Photon Unity Networking)是一种开箱即用的解…

Linux服务器安装启动卸载宝塔面板

宝塔面板简介 宝塔面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能,支持Windows和Linux系统,服务器可以通过网络轻松管理,提高运维效率。例如:创建和管…

极米H6搭载光学变焦打造无损4K,带来更沉浸观影体验

近年来,科技飞速发展,我国涌现出很多新兴科技企业,如家用智能投影、无人机、扫地机器人等行业发展迅速,国际竞争力逐年增强。其中,家用智能投影行业成长快速,正展现出蓬勃的发展生机。根据IDC自2015到2022年…

rollup打包vue组件并发布到npm

个人认为rollup在打包组件的实现方式比用webpack方便,webpack应该是比较适合打包大型的工程项目,而rollup适合打包一些平时在项目中的组件 rollup中文文档:简介 | rollup.js 中文文档 | rollup.js中文网 (rollupjs.com) 这次打包一个滚动加…