Linux系统中sh脚本编写

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脚本

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值