本文共 2491 字,大约阅读时间需要 8 分钟。
在Linux系统的开发过程中,重复性操作如copy、push等可以通过sh脚本来自动化处理。只需执行sh脚本即可完成任务。
sh脚本的开头通常使用#!/bin/sh或#!/bin/bash。前者指定Bourne shell解释器,后者为Bash shell解释器,后者功能更强,适合需要Bash特有功能的脚本。
Bash shell是对Bourne shell的扩展,支持更多语法特性。根据需求选择解释器即可。
常用判断条件如下:
- -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
#!/bin/bash for (( i = 1; i <= 5; i++ )); do sleep 1 echo "$i" done
包括拉取代码、打包、部署到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"
可以使用cron表达式来定时执行脚本
转载地址:http://xxkfk.baihongyu.com/