Linux系统中sh脚本编写

文章目录

  • Linux系统中sh脚本编写
  • 1.在编写sh脚本前了解一下基本语法
    • 1.1 if语句
      • 单分支
      • 双分支
      • 多分枝
    • 1.2 for语法
  • 2. 自己写的demo :自动部署前端项目 (自动拉取代码,打包,部署nginx)
  • 3.定时执行 shell脚本

Linux系统中sh脚本编写

我们在使用linux系统开发的过程中,经常会遇到一些重复的操作,想copy, push等等。这个时候我们就可以自己编写一个sh脚本,使用sh脚本操作这些重复的动作。直接 sh xx.sh脚本执行命令即可

#!/bin/sh 和 #!/bin/bash 都是脚本文件的开头,用来指定脚本文件的解释器。其中 #!/bin/sh 指定的是 Bourne shell 解释器,而 #!/bin/bash 指定的是 Bash shell 解释器。

Bash shell 是 Bourne shell 的增强版,它支持更多的特性和语法。因此,如果脚本中需要使用 Bash shell 特有的语法或特性,就需要使用 #!/bin/bash 来指定解释器。


1.在编写sh脚本前了解一下基本语法

1.1 if语句

这里注意:
-x:判断 文件夹 是否存在并且是否具有可执行权限
-f: 判断 判断$myPath是否存在
-d:判断 文件夹 是否存在
-n:判断一个变量是否有值

#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var/log/httpd/access.log"
# -x 判断$myPath是否存在并且是否具有可执行权限
if [ -x "$myPath" ];then#mkdir "$myPath"echo $myPath
fi# -d 判断$myPath是否存在
if [ -d "$myPath" ];then#mkdir "$myPath"
echo $myPath
fi# -f 判断$myFile是否存在
if [ -f "$myFile" ];then#touch "$myFile"
echo $myFile
fi# -n 判断一个变量是否有值
if [ -n "$myVar" ];thenecho $myVar "is empty"exit 0
fi# 判断两个变量是否相等
if [ "$var1" = "$var2" ];thenecho "$var1 eq $var2"
else echo "$var1 not eq $var2"
fi

if判断分为三个类型:单分支、双分支、多分支。

单分支

[root@bigData01 test]# cat if.sh 
#!/bin/bash
read a
read b
if (( $a == $b ))
thenecho "a和b相等"
fi
[root@bigData01 test]# bash if.sh 
12
12
a和b相等

双分支

[root@bigData01 test]# cat if.sh 
#!/bin/bash
read a
read b
if (( $a == $b ))
thenecho "a和b相等"
elseecho "a和b不相等,输入错误"
fi
[root@bigData01 test]# bash if.sh 
12
13
a和b不相等,输入错误

多分枝

[root@bigData01 test]# cat if.sh 
#!/bin/bash
printf "Input integer number: "
read num
if ((num==1)); thenecho "Monday"
elif ((num==2)); thenecho "Tuesday"
elif ((num==3)); thenecho "Wednesday"
elif ((num==4)); thenecho "Thursday"
elif ((num==5)); thenecho "Friday"
elif ((num==6)); thenecho "Saturday"
elif ((num==7)); thenecho "Sunday"
elseecho "error"
fi
[root@bigData01 test]# bash if.sh 
Input integer number: 5
Friday

1.2 for语法

#!/bin/bashfor ((i =1;i<=5;i++));
dosleep 1echo $i
done

2. 自己写的demo :自动部署前端项目 (自动拉取代码,打包,部署nginx)

#!/bin/bashcd /root/workspace/jianda
echo "***********拉取代码"
git pull origin gw
echo "***********打包"
npm run buildecho "***********拷贝新的安装包"
if [ -d "./jianda" ];thenecho "jianda文件夹存在"rm -r jianda
elseecho "文件不存在,不用删除了"
fimv dist jianda
cp -r src/assets/images/loading/* jianda/assets
rm -r /var/www/jianda
cp -r jianda /var/wwwecho "拷贝成功"nginx -s reload
echo “nginx -s reload success”

3.定时执行 shell脚本

在这里插入图片描述

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

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

相关文章

Go vs Rust:文件上传性能比较

在本文中&#xff0c;主要测试并比较了Go—Gin和Rust—Actix之间的多部分文件上传性能。 设置 所有测试都在配备16G内存的 MacBook Pro M1 上执行。 软件版本为&#xff1a; Go v1.20.5Rust v1.70.0 测试工具是一个基于 libcurl 并使用标准线程的自定义工具&#xff0c;能…

Java之线程的概念及方法的学习

线程创建 方法一 直接使用Thread public class demo {public static void main(String[] args) {new Thread(){Overridepublic void run() {System.out.println(Thread.currentThread().getName());}}.start();System.out.println(Thread.currentThread().getName());} } main…

掌握Shell:从新手到编程大师的Linux之旅

1 shell介绍 1.1 shell脚本的意义 1.记录命令执行的过程和执行逻辑&#xff0c;以便以后重复执行 2.脚本可以批量处理主机 3.脚本可以定时处理主机 1.2 脚本的创建 #!/bin/bash # 运行脚本时候执行的环境1.3 自动添加脚本说明信息 /etc/vimrc # vim主配置文件 ~/.vimrc # 该…

IoC DI

Spring 的两大核心思想 : IoC 和 AOP 我们要将对象的控制权交给Spring ,我们就需要告诉 Spring 哪些对象是需要帮我们进行创建的,这里有两类注解可以实现 : 类注解(Controller Service Repository Component Configuration)和方法注解(Bean) 这五大注解都表示把这个对象交给…

Qt布局技巧

可以先把控件放置了&#xff0c;再选中所有控件右键布局 或者是点击上面的&#xff1a;

【数据结构与算法】线性表 - 顺序表

目录 1. 线性表2.顺序表3.顺序表的优缺点4.实现&#xff08;C语言&#xff09;4.1 头文件 seqList.h4.2 实现 seqList.c 1. 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见…

计算机网络的体系结构

目录 一. 计算机体系结构的形成二. 协议与层次划分2.1 数据传输过程2.2 什么是网络协议2.3 网络协议的三要素2.4 协议有两种形式2.4 各层协议2.5 什么是复用和分用 \quad 一. 计算机体系结构的形成 \quad 计算机网络是一个非常复杂的系统, 相互通信的两个计算机系统必须高度协调…

tomcat8.5处理get请求时,控制台输出中文乱码问题的解决

问题描述 控制台输出中文乱码 版本信息 我使用的是tomcat8.5 问题解决 配置web.xml 注&#xff1a;SpringMVC中处理编码的过滤器一定要配置到其他过滤器之前&#xff0c;否则无效 <!--配置springMVC的编码过滤器--> <filter><filter-name>CharacterEn…

C#特性(Attribute)

C#特性&#xff08;Attribute&#xff09;是一种在程序中添加元数据的机制&#xff0c;它可以为代码提供额外的信息和指示。通过使用特性&#xff0c;我们可以为类、方法、属性等元素添加标记&#xff0c;以便在运行时进行更多的操作和决策。 C#特性是一种声明式编程的工具&…

NSSCTF第13页(1)

[NCTF 2018]Easy_Audit 小小代码审计 $_REQUEST:PHP的内置变量&#xff0c;是一个数组&#xff0c;保存传递的参数&#xff0c;它的特性是如果get,post一起传参&#xff0c;则会优先post传参&#xff0c;可以由此进行变量覆盖。 $_SERVER:PHP的内置变量&#xff0c;是一个数组…

一文搞懂RC滤波器的设计?

滤波器是一种可以对“波”进行过滤的器件&#xff0c;一般是特定频率的信号。所以可以常常看到滤波器的种类繁多&#xff0c;有高通滤波器&#xff0c;低通滤波器&#xff0c;带通滤波器及带阻滤波器等等。 滤波器的主要作用就是滤波&#xff0c;它需要尽可能的让有用信号能够做…

unity教程

前言 伴随游戏行业的兴起&#xff0c;unity引擎的使用越来越普遍&#xff0c;本文章主要记录博主本人入门unity的相关记录大部分依赖siki学院进行整理。12 一、认识unity引擎&#xff1f; 1、Unity相关信息&#xff1a; Unity的诞生&#xff1a;https://www.jianshu.com/p/550…