2016-08-16前端
授課內容:node
shell腳本基礎:循環,for,while,until(未講完)linux
軟件包管理(未講完):git
軟件運行環境shell
軟件包基礎數據庫
Rpm包管理windows
循環執行bash
將某代碼段重複運行屢次ide
重複運行多少次:工具
循環次數事先已知
循環次數事先未知
有進入條件和退出條件
循環控制語句:
break:【提結束循環,循環將再也不執行】指前面的循環退出,退出後還繼續執行後面的命令,而exit則是退出整個腳本
continue:【提結束本輪循環,而進入下一輪循環】當碰到continue語句時,continue後面的語句再也不執行,直接提早進入下一輪循環
for循環
for 變量名in 列表;do
循環體
done
列表:以空格隔開的包括數字、字符、文件等個體
執行機制:
依次將列表中的元素賦值給「變量名」; 每次賦值後即執行一次循環體; 直到列表中的元素耗盡,循環結束
例如:
寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和
#!/bin/bash #Version:1.0 #Create time:2016-08-15 13:51:02 #Description:寫一個腳本,提示輸入正整數n的值,計算1+2+3+…n的總和 let SUM=0 read -p "input num: " NUM expr $NUM + 0 &> /dev/null [ $? -ne 0 ] && echo "please input digitnum" && exit 100 [ $NUM -le 0 ] && echo "input the right num" && exit 99 for I in `seq $NUM` do SUM=$(($SUM+$I)) done echo "the sum is $SUM" unset SUM unset NUM
while循環:
while CONDITION; do
循環體
done
進入條件:CONDITION爲true;
退出條件:CONDITION爲false
即當循環體是真是執行循環體,循環體是假是退出循環體
例如:
求100之內全部正整數之和
#!/bin/bash #Version:1.0 #Create time:2016-08-15 14:36:00 #Description:求100之內全部正整數之和 let SUM=0 let NUM=1 while [ $NUM -le 100 ] do SUM=$(($SUM+$NUM)) NUM=$(($NUM+1)) done echo "1+2+...+100=$SUM"
until循環
until CONDITION; do
循環體
done
進入條件:CONDITION 爲false
退出條件:CONDITION 爲true
【】即當循環體是真是執行循環體,循環體是假是退出循環體,與while循環相反
軟件包管理:
軟件運行環境
程序源代碼--> 預處理--> 編譯--> 彙編--> 連接
註釋內容在預處理時被去掉
ABI:Application Binary Interface
Windows與Linux不兼容,如ls命令不能再windows運行,由於uwindows和linux的ABI接口不一樣
包管理器:
二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
debian:deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器,SUSE系列也是使用rpm包管理器
rpm: RedhatPackage Manager(初期)
RPM Package Manager (行業標準,相似GNU)
包命名
源代碼:name-VERSION.tar.gz|bz2|xz
VERSION: major.minor.release
rpm包命名方式:
name-VERSION-release.arch.rpm
例:bash-4.2.46-19.el7.x86_64.rpm
VERSION: major.minor.release(便是源代碼的命名方式)
release:release.OS
OS:el7,指的是RHEL7的版本
常見的arch:
x86: i386, i486, i586, i686(32位平臺)
x86_64: x64, x86_64, amd64(64位平臺)
powerpc: ppc
跟平臺無關:noarch
包:一個rpm包裏面包含多個文件
Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm開發子包
Application-utils-VERSION-ARHC.rpm其它子包
Application-libs-VERSION-ARHC.rpm其它子包
包之間:可能存在依賴關係,甚至循環依賴
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
因爲一個二進制的執行程序包是由二進制文件、庫文件、幫助文件和配置文件組成,因此每一個包文件裏包括:
一、包文件組成(每一個包獨有)
RPM包內的文件
RPM的元數據,如名稱,版本,依賴性,描述等
安裝或卸載時運行的腳本
二、數據庫(公共)
程序包名稱及版本
依賴關係
功能說明
包安裝後生成的各文件路徑及校驗碼信息
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum, dnf
rpm :
一、安裝
rpm {-i|--install} [install-options] PACKAGE_FILE…
-v:顯示詳細狀況
-h:以#顯示進度
[install-options]:
--test: 測試安裝,但不真正執行安裝;dry run模式
--nodeps:忽略依賴關係
--replacepkgs| replacefiles
--nosignature: 不檢查來源合法性
--nodigest:不檢查包完整性
--noscipts:不執行程序包腳本片段
%pre: 安裝前腳本;--nopre
%post: 安裝後腳本;--nopost
%preun: 卸載前腳本;--nopreun
%postun: 卸載後腳本;--nopostun
二、升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
upgrade:安裝有舊版程序包,則「升級」
若是不存在舊版程序包,則「安裝」
freshen:安裝有舊版程序包,則「升級」
若是不存在舊版程序包,則不執行升級操做
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage:降級
--force: 強行升級