博客
关于我
Linux系统中sh脚本编写
阅读量:791 次
发布时间:2023-02-05

本文共 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表达式来定时执行脚本

转载地址:http://xxkfk.baihongyu.com/

你可能感兴趣的文章
Linux时间同步服务
查看>>
linux更改源地址发送数据包,发往Docker容器内的数据包源地址被修改的研究
查看>>
Linux最全命令总结【有代码演示,没有之一】
查看>>
Linux最常用命令:简单易学,但能解决95%以上的问题
查看>>
Linux有问必答——如何查找并移除Ubuntu上陈旧的PPA仓库
查看>>
linux服务之ssh
查看>>
Linux服务器 CentOS 6.0 安装 jdk1.7 tomcat7 mysql5.6 【云服务器部署 x64】
查看>>
linux服务器上部署项目,还报路径错误,切记分隔符注意点
查看>>
Linux服务器上配置Tomcat的docBase路径映射时遇到的坑
查看>>
linux服务器中毒可疑进程sfewfesfs CPU80%
查看>>
Linux服务器中毒?教你一步步精准判断和快速处置!
查看>>
Linux服务器之间互信(无密码输入)
查看>>
linux服务器创建FTP
查看>>
Linux服务器又被暴力登录了?资深系统架构师教你一招:修改SSH默认端口!
查看>>
linux服务器大量TIME_WAIT状态问题
查看>>
linux服务器如何配置qq邮箱,linux用mail往qq邮箱发邮件
查看>>
Linux服务器存储共享操作
查看>>
Linux服务器存在大量log日志,如何快速定位错误?(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Linux服务器安装Nginx
查看>>
Linux服务器密码批量修改
查看>>