Linux系统中sh脚本编写

Linux系统中sh脚本编写我们在使用 linux 系统开发的过程中 经常会遇到一些重复的操作 想 copy push 等等

大家好,欢迎来到IT知识分享网。

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语句

#!/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" ];then echo $myVar "is empty" exit 0 fi # 判断两个变量是否相等 if [ "$var1" = "$var2" ];then echo "$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 )) then echo "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 )) then echo "a和b相等" else echo "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)); 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 [root@bigData01 test]# bash if.sh  Input integer number: 5 Friday 

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 gw echo "*打包" npm run build echo "*拷贝新的安装包" if [ -d "./jianda" ];then echo "jianda文件夹存在" rm -r jianda else echo "文件不存在,不用删除了" fi mv dist jianda cp -r src/assets/images/loading/* jianda/assets rm -r /var/www/jianda cp -r jianda /var/www echo "拷贝成功" 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 & # 这样保存日志,同步,然后 cat 一下就好了 #nohup yarn build:linux > $LOG_FILE 2>&1 & yarn build:linux > $LOG_FILE 2>&1 cat $LOG_FILE # file=dist_electron/BaiyiApp_5.3.0_amd64.deb 打包成功的标志 # 如果日志文件中存在 file=dist_electron/BaiyiApp_5.3.0_amd64.deb 成功,否则,失败 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脚本

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119309.html

(0)
上一篇 2025-11-06 14:15
下一篇 2025-11-06 14:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信