Shell及其初級編程_第1頁
Shell及其初級編程_第2頁
Shell及其初級編程_第3頁
Shell及其初級編程_第4頁
Shell及其初級編程_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1Shell概述第8講Shell及其編程2shell腳本3shell腳本變量1Shell概述

shell就是可以接受用戶輸入命令的程序。shell隱藏了操作系統(tǒng)低層的細節(jié)。Unix下的圖形用戶界面Gnome和KDE,有時也被叫做“虛擬shell”或“圖形shell”。Linux操作系統(tǒng)下的shell既是用戶交互界面,也是控制系統(tǒng)的腳本語言。在Linux系列操作系統(tǒng)下,shell是控制系統(tǒng)啟動、XWindow啟動、和很多其他實用工具的腳本解釋程序。1.1BourneShell

第一個標準LinuxShell是1970年底在V7Unix(AT&T第

7版)中引入,以其資助者StephenBourne的名字命名。Bourneshell

是一個交換式的命令解釋器和命令編程語言,可以運行為loginshell或者loginshell的子shell只有l(wèi)ogin命令可以調(diào)用Bourneshell作為一個loginshell。此時,shell先讀取/etc/profile文件和$HOME/.profile文件/etc/profile文件為所有用戶定制環(huán)境,$HOME/.profile文件為本用戶定制環(huán)境。shell讀取用戶輸入。1.2CShell

CShell

是BillJoy在上世紀80年代早期,在Berkeley的加利福尼亞大學(xué)開發(fā)的。目的是讓用戶更容易的使用交互式功能,并把ALGOL風格,適于數(shù)值計算的語法結(jié)構(gòu)變成了C語言風格。它新增了命令歷史、別名、文件名替換、作業(yè)控制等功能1.3KornShell

在很長一段時間里,只有兩類shell供選擇,Bourneshell用來編程,Cshell用來交互AT&T貝爾實驗室的DavidKorn開發(fā)了Kornshell。ksh結(jié)合了所有的Cshell的交互式特性,并融入了Bourneshell的語法。新增了數(shù)學(xué)計算,進程協(xié)作(coprocess)、行內(nèi)編輯(inlineediting)等功能。KornShell是一個交互式的命令解釋器和命令編程語言。它符合POSIX標準1.4BourneAgainShell

BourneAgainShell

,簡稱bash,1987年由布萊恩·??怂归_發(fā)的。也是GNU計劃的一部分,用來替代Bourneshell。bash是大多數(shù)類Unix系統(tǒng)以及MacOSXv10.4默認的shell,被移植到多種系統(tǒng)中bash的語法針對Bourneshell的不足做了很多擴展。bash的命令語法很多來自Kornshell和Cshell作為一個交互式的shell,按下TAB鍵即可自動補全已部分輸入的程序名,文件名,變量名等等1.5查看用戶shell

使用命令cat/etc/shells來查看/bin/目錄下Ubuntu支持的Shellecho$SHELL命令查看當前用戶的shell其他用戶的shell,可以在/etc/passwd文件中看到回目錄2shell腳本

shell腳本是利用shell的功能所寫的一個純文本程序,將各類shell命令預(yù)先放入到一個文件中,方便一次性執(zhí)行的一個程序文件,方便管理員進行設(shè)置或者管理。

shell腳本與Windows下的批處理相似,一個操作執(zhí)行多個命令shellscript提供了數(shù)組、循環(huán)、條件以及邏輯判斷等功能,可以直接以shell來寫程序,而不必使用類似C程序語言等傳統(tǒng)程序編寫的語法2.2執(zhí)行shell腳本

1.Shell腳本執(zhí)行過程shell按照腳本中命令的出現(xiàn)的順序,從上而下、從左而右地分析與執(zhí)行,可以用“&”把一個腳本的執(zhí)行放入后臺,但是當腳本運行到最后是不會等待這個進程的返回結(jié)果,解決方法是在腳本最后放“wait”任何加在#后面的數(shù)據(jù)將全部被視為批注文字而被忽略2.2執(zhí)行shell腳本

2.Shell腳本執(zhí)行方式直接命令執(zhí)行sh/bash[選項]腳本名source腳本名2.2執(zhí)行shell腳本

2.Shell腳本執(zhí)行方式直接命令執(zhí)行sh/bash[選項]腳本名打開一個子shell讀取并執(zhí)行腳本中命令。該腳本文件可以沒有“執(zhí)行權(quán)限”。sh或bash在執(zhí)行腳本過程中,選項如下: -n:不要執(zhí)行script,僅檢查語法的問題-v:在執(zhí)行script前,先將script的內(nèi)容輸出到屏幕上-x:進入跟蹤方式,顯示所執(zhí)行的每一條命令,并且在行首顯示一個“+”號 2.2執(zhí)行shell腳本

2.Shell腳本執(zhí)行方式直接命令執(zhí)行sh/bash[選項]腳本名source腳本名在當前bash環(huán)境下讀取并執(zhí)行腳本中命令該腳本文件可以沒有“執(zhí)行權(quán)限”通常用命令“.”來替代回目錄3shell腳本變量

shell腳本變量就是在shell腳本程序中保存,系統(tǒng)和用戶所需要的各種各樣的值。shell腳本變量可以分為:環(huán)境變量系統(tǒng)變量用戶自定義變量3.1系統(tǒng)變量

Shell常用的系統(tǒng)變量并不多,在做一些參數(shù)檢測的時候十分有用按鍵命令$#命令行參數(shù)的個數(shù)$n當前程序的第n個參數(shù),n=1,2,...9$0當前程序的名稱$?執(zhí)行上一個指令或函數(shù)的返回值$*以“參數(shù)1參數(shù)2...”形式保存所有參數(shù)$@以“參數(shù)1”“參數(shù)2”...形式保存所有參數(shù)$$本程序的(進程ID號)PID$!上一個命令的PID$-顯示shell使用的當前選項,與set命令功能相同3.1系統(tǒng)變量

例:分析名為sysvar.sh腳本的運行結(jié)果。sysvar.sh腳本的代碼如下:#!/bin/sh#toexplaintheapplicationofsystemvariables.echo"\$1=$1;\$2=$2";echo"thenumberofparameteris$#";echo"thereturncodeoflastcommandis$?";echo"thescriptnameis$0";echo"theparametersare$*";echo"theparametersare$@";運行結(jié)果#!/bin/sh#toexplaintheapplicationofsystemvariables.echo"\$1=$1;\$2=$2";echo"thenumberofparameteris$#";echo"thereturncodeoflastcommandis$?";echo"thescriptnameis$0";echo"theparametersare$*";echo"theparametersare$@";3.2環(huán)境變量

登入系統(tǒng)就獲得一個shell﹐它占據(jù)一個進程,輸入的命令都屬于這個shell進程的子進程,選擇此shell后,獲得一些環(huán)境設(shè)定,即環(huán)境變量。環(huán)境變量約束用戶行為,也幫助實現(xiàn)很多功能,包括主目錄的變換、自定義顯示符的提示方法、設(shè)定執(zhí)行文件查找的路徑等。常用的環(huán)境變量

按鍵命令PATH命令搜索路徑,以冒號為分隔符.但當前目錄不在系統(tǒng)路徑里HOME用戶home目錄的路徑名,是cd命令的默認參數(shù)COLUMNS定義了命令編輯模式下可使用命令行的長度EDITOR默認的行編輯器VISUAL默認的可視編輯器FCEDIT命令fc使用的編輯器HISTFILE命令歷史文件HISTSIZE命令歷史文件中最多可包含的命令條數(shù)常用的環(huán)境變量

按鍵命令HISTFILESI命令歷史文件中包含的最大行數(shù)IFS定義shell使用的分隔符LOGNAME用戶登錄名MAIL指向一個需要shell監(jiān)視修改時間的文件.當該文件修改后,shell發(fā)送消息Youhavamail給用戶MAILCHECKSHELL檢查MAIL文件的周期,單位是秒MAILPATH功能與MAIL類似.但可以用一組文件,以冒號分隔,每個文件后可跟一個問號和一條發(fā)向用戶的消息SHELLSHELL的路徑名TERM終端類型常用的環(huán)境變量

按鍵命令TMOUTSHELL自動退出的時間,單位為秒,0為禁止SHELL自動退出PROMPT_COMMAND指定在主命令提示符前應(yīng)執(zhí)行的命令PS1主命令提示符PS2二級命令提示符,命令執(zhí)行過程中要求輸入數(shù)據(jù)時用PS3select的命令提示符PS4調(diào)試命令提示符MANPATH尋找手冊頁的路徑,以冒號分隔LD_LIBRARY_PATH尋找?guī)斓穆窂?以冒號分隔3.2環(huán)境變量

例:使用env命令查看環(huán)境變量,并分析。為了方便查看,使用重定向命令將環(huán)境變量存儲到enviroment文件中,命令:env>enviroment,然后使用編輯器打開該文件3.2環(huán)境變量

3.3用戶自定義變量

例:哪些變量名是合法的desk&123 456abc

desk123

_abc1_123

Add_99用戶定義的變量由字母、數(shù)字及下劃線組成,變量名第一個字符不能為數(shù)字,變量名是大小寫敏感的。shell中的變量與c語言中的變量完全不同,不用聲明即可使用,給變量賦值的同時也就聲明了變量3.4變量的使用

引用變量時在變量名前面加上$符號輸出變量時用echo

如果變量恰巧包含在其他字符串中,為了區(qū)分變量和其他字符串,需要用{}將變量名括起來

變量值的引用與輸出3.4變量的使用

變量賦值的方式:變量名=值2.變量的賦值和替換例:day=monday string=welcome! 注意:給變量賦值的時候,不能在“=”兩邊留空格

3.4變量的使用

重置就相當于賦給這個變量另外一個值清空某一變量的值可以使用unset命令2.變量的賦值和替換變量可以有條件的替換,替換條件放在一對大括號{}中

${variable:-value}3.4變量的使用

2.變量的賦值和替換第二種替換:變量為空時替換,而且變量的值會發(fā)生改變

${variable:=value}3.4變量的使用

2.變量的賦值和替換第三種替換:只有當變量已賦值時才用指定值替換${variable:+value}

3.5數(shù)字與數(shù)組的聲明和使用

1.數(shù)字與數(shù)組的聲明shell中默認的賦值是對字符串賦值對數(shù)字或數(shù)組進行聲明,則要使用到declare命令3.5數(shù)字與數(shù)組的聲明和使用

1.數(shù)字與數(shù)組的聲明declare命令的格式:declare[+/-][選項]variable+/-:指定或關(guān)閉變量的屬性a:定義后面名為variable的變量為數(shù)組(array)類型i:定義后面名為variable的變量為整數(shù)數(shù)字(integer)類型x:將后面的variable變成環(huán)境變量r:將變量設(shè)置成readonly類型f:將后面的variable定義為函數(shù)3.5數(shù)字與數(shù)組的聲明和使用

2.數(shù)組的使用數(shù)組下標cong0開始,范圍沒有限制,不必使用連續(xù)分量name=(value1...valuen) //此時下標從0開始name[index]=value //index為下標,從0開始例:對數(shù)組進行聲明并賦值declare-aname=(abcdef) //此時數(shù)組下標從0開始name[0]=A //將第一個元素a修改為Aname[9]=j //將第10個元素賦值為j3.5數(shù)字與數(shù)組的聲明和使用

2.數(shù)組的使用取數(shù)組中的元素的時候,語法形式如下:echo${array[index]}如果想要取數(shù)組的全部元素,則要使用:

echo${array[@]}3.6shell的輸入/輸出

1.echo輸出命令使用echo可以輸出文本或變量到標準輸出,或者把字符串輸入到文件中,它的一般形式為:echo[選項]字符串

選項:-n:輸出后不自動換行-e:啟用“\”字符的轉(zhuǎn)換。3.6shell的輸入/輸出

-e:啟用“\”字符的轉(zhuǎn)換

\a

發(fā)出警告聲

\b

刪除前一個字符

\c

最后不加上換行符號

\f

換行但光標仍舊停留在原來的位置

\n

換行且光標移至行首

\r

光標移至行首,但不換行

\t

插入tab\v

與\f相同

\\

插入\字符

\x

插入十六進制數(shù)所代表的ASCII字符3.6shell的輸入/輸出

1.echo輸出命令例:不換行輸出字符“helloworld!”例:\t和\n的應(yīng)用例:\x的應(yīng)用3.6shell的輸入/輸出

2.read輸入命令使用read語句從鍵盤或文件的某一行文本中讀入信息,并將其賦給一個變量,如果只指定了一個變量,那么read將會把所有的輸入賦給該變量,直到遇到第一個文件結(jié)束符或回車,一般形式為:

readvariable1variable2......shell用空格作為多個變量之間的分隔符shell將輸入文本域超長部分賦予最后一個變量3.6shell的輸入/輸出

2.read輸入命令例:使用read語句為name、sex、age三個變量分別賦值:rose、female、303.7運算符和特殊字符

1.運算符運算符解釋結(jié)合方式()括號(函數(shù)等)→[]數(shù)組→!~取反按位取反→++--增量減量→+-正號負號→*/%乘法除法取?!?-加法減法→<<>>左移右移→3.7運算符和特殊字符

運算符解釋結(jié)合方式<<=小于小于等于→>=>大于大于等于→==!=等于不等于→&按位與→^按位異或→|按位或→&&邏輯與→||邏輯或→?:條件←=+=*=/=&=賦值←^=|=<<=>>=賦值←3.7運算符和特殊字符

例:創(chuàng)建/home/ycs/abc/test文件

(不管其是否存在)1.運算符3.7運算符和特殊字符

2.特殊字符反斜線(\)反斜線是轉(zhuǎn)義字符,它告訴Shell不要對其后面的那個字符進行特殊處理,只當做普通字符即可例:${arr[@]}的前面如果加了反斜線,那么它就是普通字符,而不是數(shù)組4shell控制結(jié)構(gòu)

4.1test命令4.2if語句4.3case語句4.4while語句程序4.5until語句4.6for語句4.7循環(huán)控制語句4.1test命令

test命令用于檢查某個條件是否成立,如果條件為真,則返回一個0值。如果表達式不為真,則返回一個大于0的值,也可以將其稱為假值格式為:testexpression或者[expression]表達式一般是字符串、整數(shù)或文件和目錄屬性,并且可以包含相關(guān)的運算符運算符可以是字符串運算符、整數(shù)運算符、文件運算符或布爾運算符4.1test命令

整數(shù)運算符test命令中,用于比較整數(shù)的關(guān)系運算符如下:運算符解釋-eq兩數(shù)值相等(equal)-ne兩數(shù)值不等(notequal)-gtn1大于n2(greaterthan)-ltn1小于n2(lessthan)-gen1大于等于n2(greaterthanorequal)-len1小于等于n2(lessthanorequal)4.1test命令

整數(shù)運算符例:使用test判斷兩個數(shù)的大小,并查看返回值情況4.1test命令

2.字符串運算符用于字符串比較時,test的關(guān)系運算符如下:運算符解釋–zstring判斷字符串string是否為0,若string為空字符串,則為true–nstring判斷字符串string是否為非0,若string為空字符串,則為falsetr1=str2判斷兩個字符串str1和str2是否相等,若相等,則為truestr1!=str2判斷兩個字符串str1和str2是否不相等,若不相等,則為true4.1test命令

2.字符串運算符例:使用test判斷兩個字符串是否相等,并查看返回值情況4.1test命令

3.文件運算符運算符解釋-efile判斷file文件名是否存在-ffile判斷file文件名是否存在且為文件-dfile判斷file文件名是否存在且為目錄(directory)-bfile判斷file文件名是否存在且為一個blockdevice-cfile判斷file文件名是否存在且為一個characterdevice-Sfile判斷file文件名是否存在且為一個Socket-Pfile判斷file文件名是否存在且為一個FIFO(pipe)-Lfile判斷file文件名是否存在且為一個連接文件-rfile判斷file文件名是否存在且具有“可讀”權(quán)限4.1test命令

3.文件運算符運算符解釋-wfile判斷file文件名是否存在且具有“可寫”權(quán)限-xfile判斷file文件名是否存在且具有“可執(zhí)行”權(quán)限-ufile判斷file文件名是否存在且具有“SUID”屬性-gfile判斷file文件名是否存在且具有“SGID”屬性-kfile判斷file文件名是否存在且具有“Stickybit”屬性-sfile判斷file文件名是否存在且為“非空白文件”file1–ntfile2判斷file1是否比file2新(newethan)file1–otfile2判斷file2是否比file2舊(olderthan)file1–effile2判斷file1與file2是否為同一文件4.1test命令

3.文件運算符例:判斷文件是否存在,并查看返回值情況4.1test命令

4.邏輯運算符例:判斷$num的值是否在10和20之間運算符解釋-a邏輯與-o邏輯或!邏輯非4.2if語句

if語句的結(jié)構(gòu)分為:單分支if語句雙分支if語句多分支if語句只判斷指定的條件,當條件成立時執(zhí)行相應(yīng)的操作,否則不做任何操作。格式為:if條件測試命令then

命令序列fi4.2if語句

例:輸入一個整數(shù),判斷該數(shù)是否等于0。腳本如下:#!/bin/bashread-p"pleaseinputanumber:"num if["$num"==0] thenecho"thenumberofyouinputis0"fi4.2if語句

if語句的結(jié)構(gòu)分為:單分支if語句雙分支if語句雙分支的if語句在條件成立或不成立的時候分別執(zhí)行不同的命令序列。格式為:0?是否if條件測試命令then

命令序列1else命令序列2fi4.2if語句

if語句的結(jié)構(gòu)分為:單分支if語句雙分支if語句多分支if語句在shell腳本中,if語句能夠嵌套使用,進行多次判斷。格式為:if條件測試命令1then命令序列1elif條件測試命令2then命令序列2else命令序列3fi成立?是否成立?是否4.2if語句

例:編寫腳本,根據(jù)用戶輸入的字符判斷#!/bin/bashread-p"pleaseinputa(Y/N):"str if["$str"=="Y"]||["$str"=="y"] thenecho"OK,pleasecontinue" elif["$str"=="N"]||["$str"=="n"] thenecho"pleasetryagain" else echo"pleaseinputy/Yorn/N"ficase語句的格式為:case$變量名in模式1)命令序列1;;模式2)命令序列2;;*)默認執(zhí)行的命令序列esac4.3case語句

case行尾必須為單詞“in”每一個模式必須以右括號“)”結(jié)束兩個分號“;;”表示命令序列結(jié)束匹配模式中可是使用方括號表示一個連續(xù)的范圍,如[0-9]使用豎杠符號“|”表示或。最后的“*)”表示默認模式,當使用前面的各種模式均無法匹配該變量時,將執(zhí)行“*)”后的命令序列例:編寫腳本shell,從鍵盤輸入數(shù)字1、2、3#!/bin/bashread-p"pleaseinputa(Y/N):"num case$numin1)echo"thenumberofyouinputis1";;2)echo"thenumberofyouinputis2";;3)echo"thenumberofyouinputis3";;*)echo"thenumberofyouinputis123";;esac4.3case語句

while語句是shell提供的一種循環(huán)機制,當條件為真的時候它允許循環(huán)體中的命令繼續(xù)執(zhí)行。否則退出循環(huán)4.4while語句

while[條件測試命令] do

命令序列

done語句格式:例:編寫腳本,輸入整數(shù)n,計算1到n的和4.4while語句

#!/bin/bashread-p"pleaseinputanumber:"nsum=0i=1while[$i-le$n]

do sum=$[$sum+$i] i=$[$i+1] doneecho"thesumof'1+2+3+...n'is$sum"until語句是當條件滿足時退出循環(huán),否則執(zhí)行循環(huán),語句格式為:

4.5until語句

while[條件測試命令] do

命令序列

done例:編寫腳本,輸入整數(shù)n,計算1到n的和4.5until語句

#!/bin/bashread-p"pleaseinputanumber:"nsum=0i=1until[$i-gt$n]

do sum=$[$sum+$i] i=$[$i+1] doneecho"thesumof'1+2+3+...n'is$sum"for語句的格式:4.6for語句

for變量名in取值列表

do

命令序列

done例:計算1到n的和#!/bin/bashread-p"pleaseinputanumber:"nsum=0i=1foriin`seq1$n`

do sum=$[$sum+$i] i=$[$i+1]doneecho"thesumof'1+2+3+...n'is$sum"1.break語句4.7

循環(huán)控制語句

break語句用于for、while和until循環(huán)語句中,忽略循環(huán)體中任何其他語句和循環(huán)條件的限制,強行退出循環(huán)例:編寫腳本,輸入整數(shù)n,但我們只計算1到10的和4.7

循環(huán)控制語句

#!/bin/bashread-p"pleaseinputanumber:"nsum=0i=1foriin`seq1$n` do if[$i-gt10] then break

fi sum=$[$sum+$i] i=$[$i+1]doneecho"thesumof'1+2+3+...n'is$sum"2.continu語句4.7

循環(huán)控制語句

continue語句應(yīng)用在for、while和until語句中,用于讓腳本跳過其后面的語句,執(zhí)行下一次循環(huán)例:編寫腳本,輸入整數(shù)n,計算1到n的奇數(shù)和#!/bin/bashread-p"pleaseinputanumber:"nsum=0i=1

4.7

循環(huán)控制語句

foriin`seq1$n`do if[$[$i%2]-eq0]

then i=$[$i+1]continue

fi sum=$[$sum+$i] i=$[$i+1]doneecho"thesumof'1+2+3+...n'is$sum"回目錄5Shell函數(shù)

5.1函數(shù)的聲明5.2函數(shù)的調(diào)用5.3函數(shù)的參數(shù)傳遞shell函數(shù)允許將一組命令或語句形成一個可用語句塊。shell把函數(shù)塊存放在內(nèi)存中,節(jié)省了程序加載的時間;shell以一種內(nèi)部格式來存放這些函數(shù),節(jié)省了解釋的時間;函數(shù)組成:函數(shù)名和函數(shù)體函數(shù)在使用前必須聲明,有兩種格式:5.1函數(shù)的聲明

function函數(shù)名(){

命令1…… }函數(shù)名(){命令1……}例:定義一個函數(shù),腳本如下5.1函數(shù)的聲明

#!/bin/bashhello(){ echo"today'sdateis`date`"}hello 5.2函數(shù)的調(diào)用

函數(shù)的調(diào)用:1.在同一個腳本中,使用函數(shù)名直接調(diào)用函數(shù)2.函數(shù)在另外一個腳本中,調(diào)用方法例:兩個腳本文件/home/ycs/func.sh和/home/ycs/shell-test/while.sh,它們不在同一目錄腳本func.sh的代碼#!/bin/bashecho"today'sdateis`date`"腳本/home/ycs/shell-test/while.sh的代碼中定義了函數(shù)func.sh中調(diào)用while.sh,需要將func.sh的代碼:#!/bin/bashfunctionhaha{n=50sum=0i=1foriin`seq1$n`dosum=$[$sum+$i]i=$[$i+1]doneecho"thesumof'1+2+3+...n'is$sum"}haha#!/bin/bashecho"today'sdateis`date`"增加一行:bash/home/ycs/shell-test/while.sh 5.3函數(shù)的參數(shù)傳遞

在函數(shù)調(diào)用的過程中,如果有參數(shù)要傳遞時,參數(shù)直接跟在函數(shù)名的后面,不用括號括起來。例:編輯腳本,在腳本中用函數(shù)計算計算1到n的和#!/bin/bashfunctionhaha{ sum=0 i=1 n=$1 foriin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論