linux基礎學習-第十一天(腳本循環、軟件包管理)

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: 強行升級

相關文章
相關標籤/搜索