在剛入行軟件測試的時候,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根據當前時間,具體到分鐘吧,在腳本所在文件創建一個文件夾,名稱就用上那個時間,避免文件夾重名啥的
3進入這個文件夾,下載壓縮包
4解壓壓縮包,然後删除壓縮包,為下一步做準備
5解壓後就是一個文件夾,我們獲取一下這個文件夾名字,然後進去
6拷貝文件,完成。
具體實現如下:
好了一個簡單的腳本寫好了,腳本知識點:
1、反引号的使用,反引号的作用就是将反引号内的Linux命令先執行,然後将執行結果賦予變量
2、位置參數的使用
3、創建文件夾、删除、解壓、echo、sleep
4、scp拷貝,遠程拷貝
5、for循環
6、wget 下載
最後:1)關注 私信回複:“測試”,可以免費領取一份10G軟件測試工程師面試寶典文檔資料。以及相對應的視頻學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql數據庫、抓包工具、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試等。
2)關注 私信回複:"入群" 就可以邀請你進入軟件測試群學習交流~~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!