shell脚本相关应用

编写一个简单的脚本,以及运行脚本

  301  vim helloworld.sh

#!/bin/bash
echo "hello world!"
ls -lh /etc/
 

执行的方式如下:
  302  bash helloworld.sh 
  303  sh helloworld.sh 
  304  chmod +x helloworld.sh 
  305  ./helloworld.sh

  306 source helloworld.sh 
 

脚本安装nginx

[root@localhost ~]# vim nginx.sh

#!/bin/bash
yum -y install gcc gcc-c++ make pcre-devel openssl-devel wget
cd /usr/local/src
wget 'https://nginx.org/download/nginx-1.26.1.tar.gz'
tar xf nginx-1.26.1.tar.gz
cd nginx-1.26.1
./configure --prefix=/usr/local/nginx
make -j 4
make install
[root@localhost ~]# bash nginx.sh         运行脚本

变量

自定义变量

[root@localhost ~]# b=3
[root@localhost ~]# echo $b
3
[root@localhost ~]# unset b
[root@localhost ~]# echo $b

[root@localhost ~]# 

环境变量

[root@localhost ~]# echo $PWD        当前所在的目录是不是需要的目录
/root
[root@localhost ~]# echo $PATH
/usr/local/mongodb/bin:/usr/local/mongodb/bin:/opt/apache-maven-3.6.3/bin:/usr/local/jdk17/bin/:/opt/apache-maven-3.6.3/bin:/usr/local/jdk17/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo $USER
root

env是环境的意思

位置变量

脚本或者应用需要参数的时候可以使用

在脚本中读取到5个参数,并且输出到终端

[root@localhost ~]# vim test001.sh

#!/bin/bash

echo $1
echo $2
echo $3
echo $4
echo $5
[root@localhost ~]# bash test001.sh 1 2 3 4 5
1
2
3
4
5
 

[root@localhost ~]# vim c.sh

#!/bin/bash
useradd $1
echo $2|passwd --stdin $1

[root@localhost ~]# bash c.sh zzzz zzzz
更改用户 zzzz 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# su zzzz
[zzzz@localhost root]$ cd
[zzzz@localhost ~]$ su root
密码:
[root@localhost zzzz]# 

预定义变量

[root@localhost ~]# vim i.sh

#!/bin/bash 
#将所有的脚本参数输出到终端
for x in "$*"
do
        echo $x
done

[root@localhost ~]# bash i.sh a b c
a b c
[root@localhost ~]# bash i.sh 1 3 5 a b c
1 3 5 a b c

#!/bin/bash 
#将所有的脚本参数输出到终端
for x in "$@"
do
        echo $x
done

#!/bin/bash 
#将所有的脚本参数输出到终端
for x in "$@"
do
        echo $x
done
echo $?
echo $#
echo $0

条件判断

[root@localhost ~]# test 3 -gt 2
[root@localhost ~]# echo $?
0

#!/bin/bash
num1=3 
num2=4
if [ $num1 -eq $num2 ]; then
        echo "两个数字相等"
fi
[root@localhost ~]# bash if.sh 
[root@localhost ~]# 
 

#!/bin/bash
if [ $1 -eq $2 ]; then
        echo "两个数字相等"
else
        echo "两个数值不相等"
fi
[root@localhost ~]# bash if.sh 3 3
两个数字相等
[root@localhost ~]# bash if.sh 33 3
两个数值不相等
 

#!/bin/bash
echo "1:"
read a
echo "2:"
read b
if [ $a -eq $b ]; then
        echo "两个数字相等"
else
        echo "两个数值不相等"
fi
[root@localhost ~]# bash if.sh 
1:
4
2:
6
两个数值不相等
[root@localhost ~]# bash if.sh 
1:
2
2:
2
两个数字相等
 

检测网络是否畅通:

#!/bin/bash
read -p "请输入测试的网站:"web
ping -c 3 $web & > /dev/null
if [ $? -eq 0 ];then            # 如果ping命令执行成功,那么
                echo "此时⽹络畅通!"   # 输出“此时网络畅通”
else    # 否则
                echo "⽆法访问,请检查⽹址是否输⼊正确或检查相关的⽹络配置!"           # 输出“无法访问...”
fi              # if语句的结尾

[root@localhost ~]# vim ping.sh
[root@localhost ~]# bash ping.sh www.baidu.com
请输入测试的网站:www.baidu.com
此时⽹络畅通!
[root@localhost ~]# PING www.a.shifen.com (180.101.50.242) 56(84) bytes of data.
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=1 ttl=128 time=19.5 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=2 ttl=128 time=23.0 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=3 ttl=128 time=51.3 ms

--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 19.517/31.314/51.345/14.239 ms

变量赋值

[root@localhost ~]# aaa="abc"
[root@localhost ~]# echo $aaa
abc
[root@localhost ~]# test $aaa == "abc"
[root@localhost ~]# echo $?
0
[root@localhost ~]# test $aaa == "aaa"
[root@localhost ~]# echo $?
1
[root@localhost ~]# 

[root@localhost ~]# unset $aaa
[root@localhost ~]# echo $aaa
abc
[root@localhost ~]# unset aaa
[root@localhost ~]# echo $aaa

[root@localhost ~]# test -z $aaa
[root@localhost ~]# echo $?
0
[root@localhost ~]# test -n $aaa
[root@localhost ~]# echo $?
0
 

判断账号

[root@localhost ~]# vim zifu.sh

#!/bin/bash
read -p "请输入账号:" user
if [ $user == "admin"  ]; then
        echo "欢迎登录:$user"
else
        echo "账号或者密码错误"
fi
[root@localhost ~]# bash zifu.sh 
请输入账号:admin
欢迎登录:admin
[root@localhost ~]# bash zifu.sh 
请输入账号:aaa
账号或者密码错误

检查有没有安装nginx

#!/bin/bash
rpm -qa | grep nginx
echo $?

[root@localhost ~]# bash login001.sh 
1

是否安装nginx,安装了就卸载了重装

#!/bin/bash
rpm -qa | grep nginx
#echo $?
if [ $? -eq 1  ]; then
        yum -y install nginx
else
        yum -y remove nginx
        yum -y install nginx
fi

文件目录权限的判断

[root@localhost ~]# touch abc
[root@localhost ~]# ls -l ab
ls: 无法访问ab: 没有那个文件或目录
[root@localhost ~]# ls -l abc
-rw-r--r--. 1 root root 0 7月  26 11:26 abc
[root@localhost ~]# [ -e "/abc"  ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -e "z"  ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -e "abc"  ]
[root@localhost ~]# echo $?
0
 

[root@localhost ~]# [ -w "abc"  ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -x "abc"  ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# ls -l abc
-rw-r--r--. 1 root root 0 7月  26 11:26 abc
[root@localhost ~]# chmod +x abc        添加执行权限,再判断
[root@localhost ~]# [ -x "abc"  ]
[root@localhost ~]# echo $?
0

应用:

#!/bin/bash
read -p "请输入名称" name
if [ $name == "haha"  ] || [ $name == "hehe"  ];then
        echo "此人相当友好"
else
        echo "登徒浪子"
fi 
[root@localhost ~]# bash b.sh 
请输入名称hhh
登徒浪子
[root@localhost ~]# bash b.sh 
请输入名称haha
此人相当友好
[root@localhost ~]# bash b.sh 
请输入名称hehe
此人相当友好
 

#!/bin/bash
read -p "请输入年龄" age
read -p "请输入性别" gender
if [ $age -ge 30 ] && [ $gender == "女" ]; then
        echo "工资加两千,每顿饭加个鸡腿"
else
        echo "你要继续努力哦"
fi
[root@localhost ~]# bash z.sh 
请输入年龄32
请输入性别nv
你要继续努力哦
[root@localhost ~]# bash z.sh 
请输入年龄44
请输入性别女
工资加两千,每顿饭加个鸡腿
 

多项选项:

#!/bin/bash
echo "1新增文件 2删除文件 3修改文件 4查找文件"
read -p "请输入序号选择功能" m
if [ $m == 1  ] ;then
        touch aaaaa.txt
elif [ $m == 2  ];then
        rm -rf aaaaa.txt
else
        echo "其他功能正在开发"
fi

read的使用

[root@localhost ~]# read -p "输入一个数据" s        有回显
输入一个数据aavvv
[root@localhost ~]# echo

[root@localhost ~]# echo $s
aavvv
[root@localhost ~]# read -p "输入一个数据" -s s        没有回显
输入一个数据[root@localhost ~]# 
[root@localhost ~]# echo $s
bbbb

[root@localhost ~]# read -p "三个变量" a b c        三个变量赋值
三个变量12 13 14
[root@localhost ~]# echo $a 
12
[root@localhost ~]# echo $b
13
[root@localhost ~]# echo $c
14

#!/bin/bash

read -p "username:" username
read -p "password:" password
useradd $username
echo $password | passwd --studin $username
if [ $? -eq 0  ];then
        echo "账户$username 注册成功"
fi
 

sed流式编辑器


(一)概述
sed 是文本处理工具,读取文本内容,根据指定条件进行处理,可实现增删改查的功能。sed 依赖于正则表达式。 
1、格式
sed '过滤+动作' 文件路径
2、选项
-e 指定要执行的命令 (操作) ,只有一个编辑命令 (操作) 时可省略  
-n 只输出处理后的行,读入时不显示,不对原文件进行修改  
-i 直接修改源文件,不输出结果  
3、操作
p 打印(输出) 
d 删除(整行) 
s 替换(字符串匹配) 
c 替换(整行) 
r 读取指定文件(追加到行后) 
a (append)追加到指定内容到行后 
i (insert)追加指定内容到行前
 
w 另存为  
n 表示读入下一行内容 
H 复制到剪贴板  
g 将剪贴板中的内容覆盖到指定行 
G 将剪贴板中的内容追加到指定行后  
(二)sed命令引用变量
1. sed命令使用单引号的情况下,可以使用 '"$var"' 引用(单引号,然后 双引号,变量): 

sed -i '2s/node_base/'"$i"'/' /etc/libvirt/qemu/$i.xml 
2. sed命令中使用双引号的情况下,直接 shell command 或者 $(shell  command) 引用命令执行。

sed -i "2s/node_base/$i/" /etc/libvirt/qemu/$i.xml

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

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

相关文章

vue中scoped详解以及样式穿透>>>、/deep/、::v-deep

1、scoped scoped属性用于限制样式仅应用于当前组件。当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,通过该属性,可以使得组件之间的样式不互相污染。 原理:当样式中加了scoped属性时候,编译的…

QT自定义无边框窗口(可移动控制和窗口大小调整)

QT是一个功能强大的跨平台开发框架,它提供了丰富的界面设计工具和组件。在界面开发中,QT窗口自带的标题栏无法满足我们的需求。我们就需要自定义无边框窗口,包括自定义标题栏和窗口大小调整功能。本文将介绍如何在QT中实现这些功能。 一、简…

【五】MySql8基于m2芯片arm架构Ubuntu24虚拟机安装

文章目录 1. 更新系统包列表2. 安装 MySQL APT Repository3. 更新系统包列表4. 安装 MySQL Server5. 运行安全安装脚本6. 验证 MySQL 安装7. 配置远程连接7.1 首先要确认 MySQL 配置允许远程连接:7.2 重启 MySQL 服务:7.3 检查 MySQL 用户权限&#xff1…

**往届快至会后2个月完成检索,刊后1个月完成检索,第四届电子信息工程与计算机科学国际会议(EIECS 2024)火热征稿中!

2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024) 2024 4th International Conference on Electronic Information Engineering and Computer Science 中国延吉 | 2024年9月27-29日 二轮截稿日期:2024年8月9日 收录检索:EI Compendex, Sc…

qt初入门9:qt记录日志的方式,日志库了解练习(qInstallMessageHandler,qslog, log4qt)

项目中用到qt,考虑有需要用到去记录日志,结合网络,整理一下,做记录。 简单了解后,qt实现日志模块思考: 1:借助qt自带的qInstallMessageHandler重定向到需要的目的地。 2:自己封装一…

pageoffice常见问题处理

pageoffice是由卓正软件公司开发的一套在线编辑office的插件。要在自己的系统中使用,需要进行集成开发,把pageoffice嵌入到自己的系统中。以下记录在使用过程中常见的问题和解决方法: 1.PageOffice对客户端的要求 office 不能是家庭版&#x…

2. 卷积神经网络无法绕开的神——LeNet

卷积神经网络无法绕开的大神——LeNet 1. 基本架构2. LeNet 53. LeNet 5 代码 1. 基本架构 特征抽取模块可学习的分类器模块 2. LeNet 5 LeNet 5: 5 表示的是5个核心层,2个卷积层,3个全连接层.核心权重层:卷积层、全连接层、循环层&#xff…

093、Python操作Excel生成统计图表

在Excel里做统计表是我们经常会做的一件事情。我们也可以通过编程的方式操作Excel生成统计图表。 下面是官方的一个很有参考价值的案例: from openpyxl import Workbook from openpyxl.chart import BarChart, Reference from copy import deepcopywb Workbook(w…

生活实用英语口语“拆迁”用英文怎么说?柯桥成人学英语到蓝天广场

● 1. “拆迁”英语怎么说? ● 01. 其实国外也有拆迁 但国外的拆迁,只管拆 不管安置,你爱去哪去哪 英文可以说 housing removal 02. 但我们中国的“拆迁” 既管“拆”也管“迁” (还是中国人幸福~) 英文可以说 housin…

车载录像机给公交公司管理带来哪些好处

一、引言 随着社会的快速发展,公共交通日益成为人们出行的主要方式之一。对于公交公司而言,如何有效管理车辆及司乘人员,确保行车安全、服务质量以及乘客的合法权益,成为一项重要的任务。本文将从以下几个方面详细阐述管理效果的…

排查C++软件异常的常见思路与方法(实战经验总结)

目录 1、概述 2、常用的C++异常排查思路与方法 2.1、IDE调试 2.1.1、Debug和Release下的调试 2.1.2、VS附加到进程调试 2.1.3、Windbg附加到进程调试 2.2、添加日志打印 2.3、分块注释代码 2.4、数据断点 2.5、历史版本比对法 2.6、Windbg静态分析与动态调试 2.6.1…

7.24 补题

C 小w和大W的决斗 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 小w和大W为了比出谁更聪明。决定进行一场游戏。游戏内容如下: 两人轮流操作,小w先进行操作,每次操作可以选择下列两个其一: 选择数组中的一…

websocket通信问题排查思路

websocket通信问题排查思路 一、websocket连接成功,但数据完全推不过来。 通过抓包发现,是回包时间太长超过了1分钟导致的。这种通常是推送数据的线程有问题导致的。 正常抓包的情况如下: 二、大量数据可以正常推送成功,不定时…

【机器学习】机器学习之多变量线性回归-Multiple_Variable_Soln

引言 扩展数据结构和之前开发的例程,以支持多个特征。有几个例程被更新,使得实验看起来有些冗长,但实际上只是对之前的例程进行了小的调整,因此快速回顾是可行的 文章目录 引言一、多变量线性回归1.1 目标1.2 工具 二、问题陈述2.…

【因数之和】python求解方法

输入两个整数A和B,求A的B次方的因子和,结果对1000000007取模。 def mod_exp(base, exp, mod):result 1while exp > 0:if exp % 2 1:result (result * base) % modbase (base * base) % modexp // 2return resultdef sum_of_factors(n):total 0…

【无标题】shell脚本的基本命令+编写shell脚本

shell脚本 一.shell基础 1.shell概念 2.shell脚本 3.shell脚本编写注意事项 二.编写shell脚本 1.编写一个helloworld脚本,运行脚本 [rootshell ~]# vim helloworld.sh #!/bin/bash //声明 echo "hello world!" ls -lh /etc/ 运行脚本(四种方式)&…

c/c++的内存管理(超详细)

一、c/c的内存分布 这是操作系统中对于内存的划分: 我们重点掌握以下几个区域即可: 1.栈 (调用函数会建立栈帧) 2.堆(动态开辟的空间) 3.数据段(静态区):存放静态变量以及全局变量 4.代码段 (常量区) 先来看看一个题目: int…

[物联网专题] RS485继电器输出之Modbus控制流程和时间优化分析

在工控领域,往往需要大量的输入信号和输出控制信号,以接收各种传感信号和产生输出控制动作。由于PLC的输出触点数量有限,或者因为更多输出触点的PLC价格昂贵,性价比并不高。为了解决这个矛盾,基于MODBUS协议的继电器IO…

数据结构:基础概念

一、相关概念 概念 相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构 集合:所有数据在同一个集合中,关系平等。 线性:数据和数据之间是一对一的关系 树: 一对多 图:多对多 物理结构(在内存当中的存储关系)…

AC695x BLE OTA调试

SDK版本:AC695N_soundbox_sdk_release_3.1.0AC695x SDK支持BLE OTA升级,使用杰理公版APP升级即可。SDK需要做一些调整,板级文件需要增加如下配置,使能OTA升级 #define TCFG_APP_BT_EN 1#define APP_UPDATE_EN …