文章目录
- 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" ];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”
 
3.定时执行 shell脚本




















