
Linux系统中sh脚本编写
发布日期:2025-04-10 02:35:24
浏览次数:7
分类:精选文章
本文共 2491 字,大约阅读时间需要 8 分钟。
Linux系统中sh脚本编写
在Linux系统的开发过程中,重复性操作如copy、push等可以通过sh脚本来自动化处理。只需执行sh脚本即可完成任务。
sh脚本的开头通常使用#!/bin/sh或#!/bin/bash。前者指定Bourne shell解释器,后者为Bash shell解释器,后者功能更强,适合需要Bash特有功能的脚本。
Bash shell是对Bourne shell的扩展,支持更多语法特性。根据需求选择解释器即可。
1. 在编写sh脚本前了解基本语法
1.1 if语句
常用判断条件如下:
- -x:判断文件夹是否存在且是否可执行 - -f:判断文件是否存在 - -d:判断文件夹是否存在 - -n:判断变量是否为空 - 判断两个变量是否相等#!/bin/sh myPath="/var/log/httpd/" myFile="/var/log/httpd/access.log" if [ -x "$myPath" ]; then mkdir "$myPath" echo "$myPath" fi if [ -d "$myPath" ]; then mkdir "$myPath" echo "$myPath" fi if [ -f "$myFile" ]; then touch "$myFile" echo "$myFile" fi if [ -n "$myVar" ]; then echo "$myVar" "is empty" exit 0 fi if [ "$var1" = "$var2" ]; then echo "$var1 eq $var2" else echo "$var1 not eq $var2" fi
if判断类型:单分支、双分支、多分支
单分支
#!/bin/bash read aread bif (( $a == $b )) then echo "a和b相等" fi
双分支
#!/bin/bash read aread bif (( $a == $b )) then echo "a和b相等" else echo "a和b不相等,输入错误" fi
多分枝
#!/bin/bash printf "Input integer number: " read num if (( num == 1 )); then echo "Monday" elif (( num == 2 )); then echo "Tuesday" elif (( num == 3 )); then echo "Wednesday" elif (( num == 4 )); then echo "Thursday" elif (( num == 5 )); then echo "Friday" elif (( num == 6 )); then echo "Saturday" elif (( num == 7 )); then echo "Sunday" else echo "error" fi
1.2 for语法
#!/bin/bash for (( i = 1; i <= 5; i++ )); do sleep 1 echo "$i" done
2. 自己写的demo:自动部署前端项目
包括拉取代码、打包、部署到nginx等步骤
#!/bin/bash cd /root/workspace/jianda echo "***********拉取代码" git pull origin gwe echo "***********打包" npm run build echo "***********拷贝新的安装包" if [ -d "./jianda" ]; then echo "jianda文件夹存在" rm -r jianda else echo "文件不存在,不用删除了" fi mkdirp dist cp -r src/assets/images/loading/* jianda/assets rm -r /var/www/jianda cp -r jianda /var/www/wwwecho "拷贝成功" nginx -s reload echo “nginx -s reload success”
demo2
#!/bin/bash DIR=/home/dell/workspace/electron5.0 LOG_FILE=/home/dell/electron-develop.log cd $DIR echo "拉取代码" git pull echo "正在打包打包" # 使用nohup保存日志并异步执行 nohup yarn build:linux > $LOG_FILE 2>&1 & yarn build:linux > $LOG_FILE 2>&1 cat $LOG_FILE 打包成功标志 if grep -q "file=dist_electron/BaiyiApp_5.3.0_amd64.deb" $LOG_FILE; then echo "打包成功打包成功打包成功" echo "打包成功打包成功打包成功" echo "打包成功打包成功打包成功" else echo "打包失败打包失败打包失败" echo "打包失败打包失败打包失败" echo "打包失败打包失败打包失败" fi echo "打包结束,日志路径:$LOG_FILE"
3. 定时执行 shell脚本
可以使用cron表达式来定时执行脚本
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月25日 14时09分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux安装postgresql及基础操作
2023-02-04
linux安装rabbitmq3.7.15教程
2023-02-04
Linux安装Redis 与 Redis基本语法
2023-02-04
Linux安装Redis及配置(超详细)
2023-02-04
Linux安装Tomcat
2023-02-04
Linux安装与配置
2023-02-04
Linux安装与配置SSH服务
2023-02-04
Linux安装卸载Mysql数据库
2023-02-04
linux安装卸载软件
2023-02-04
linux安装宋体
2023-02-04
LINUX安装源码软件经典三部曲
2023-02-04
linux安装目录
2023-02-04
Linux定时Job:crontab -e 与 /etc/crontab 的区别
2023-02-04
linux实用命令详解(新建删除复制文件夹,挂载) 转
2023-02-04
linux实验结果的分析与评价,Linux操作系统实验课程探索
2023-02-04
linux审计功能及规则 (audit.rule)
2023-02-04
Linux小技巧:如何在 Linux 中复制/移动文件时显示进度条?
2023-02-04
Linux小白入门
2023-02-04
Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式
2023-02-04