小白也能操作Linux,简单的shell脚本编写边学边用!

发表于:2021-12-21 09:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:书包    来源:51Testing软件测试网原创

  在刚入行软件测试的时候,shell脚本也就是了解这个概念,那会儿也基本用不到这个技能,工作做得最多的就是点点点。
  现在由于所处行业的关系吧,经常要在linux服务器做些常见操作。遇到不会的就百度,也慢慢的学了一些之前没有接触过的linux 命令,也开始看shell脚本的书籍,看过没有实战没有练习,也就存在一个概念。
  Linux命令用多了,自然而然想到了shell脚本,想要用它来解决一些工作中的重复操作,于是开始边学边用,效果还不错。
  工作场景:
  我们测试的时候会把软件包拷贝到管理平台的软件仓库中,如果仓库中有,就要覆盖掉。
  手动操作的流程是这样的:
  wget【url】:下载软件包,压缩包格式的;
  tar -zxvf xxx.tar.gz:解压软件包到当前文件;
  进入到解压好的文件中,里面有2个文件夹,然后依次拷贝,这里使用scp命令,-r是递归目录的意思。scp -r xxx/  /opt/xxx
  这里为啥没用cp呢?因为我发现cp覆盖时,老是提示我,需要我手动确认,太繁琐了。所以这里使用了scp命令,这个命令经常用于两个服务器之间远程拷贝。
  这个软件包更换流程,做的次数多了也熟练和熟悉了,突然有一天,要告诉一个不懂linux命令的人,让他去完成软件包更换工作。这就有点难上加难了。想到了自己也经常做这个操作,也不想对别人进行小白教学,那就编写个简单的shell脚本吧。
  设计思路是这个的:
#!/bin/bash  
#获取当前时间  
cur_date=`date +%Y%m%d-%H-%M`  
tmp_dir=service_$cur_date  
#根据时间,创建文件夹  
mkdir $tmp_dir  
cd $tmp_dir  
echo "进入目录:"$tmp_dir  
#下载  
echo "下载文件到"$tmp_dir  
wget $1  
# 解压  
echo "正在解压文件"  
sleep 3  
tar -zxvf *.tar.gz  
echo "解压完成,开始删除压缩包"  
rm -rf *.tar.gz  
for i in `ls`  
do  
        echo "软件包的文件夹名:"$i  
        tmp_dir_package=$i   
done  
cd $tmp_dir_package  
echo "进入包目录:"$tmp_dir_package  
echo "开始拷贝软件包到ole软件仓库/opt/"  
scp -r package/ /opt/  
scp -r repository/ /opt/  
echo "软件包拷贝完成,别忘了去sole软件仓库刷新啊!!!"  
sleep 3

  1、将下载地址作为位置参数传入脚本。
  2、根据当前时间,具体到分钟吧,在脚本所在文件创建一个文件夹,名称就用上那个时间,避2免文件夹重名啥的。
  3、进入这个文件夹,下载压缩包。
  4、解压压缩包,然后删除压缩包,为下一步做准备。
  5、解压后就一个文件夹,我们获取一下这个文件夹名字,然后进去。
  6、拷贝文件,完成。
  具体实现如下:
  好了一个简单的脚本写好了,脚本知识点:
  1、反引号的使用,反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。
  2、位置参数的使用。
  3、创建文件夹、删除、解压、echo、sleep。
  4、scp拷贝,远程拷贝。
  5、for循环。
  6、wget 下载。

  版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号