版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.bash編程入門shell script(bash)簡介眾所皆知地,unix上以小工具著名,利用許多簡單的小工具,來完成原本需要大量軟體開發(fā)的工作,這一點特色,使得unix成為許多人心目中理想的系統(tǒng)平臺。在眾多的小工具中,shell script算得上是最基本、最強大、運用最廣泛的一個。它運用圍之廣,不但從系統(tǒng)啟動、程式編譯、定期作業(yè)、上網(wǎng)連線,甚至安裝整個linux系統(tǒng),都可以用它來完成。因為shell script是利用您平日在使用的一些指令,將之組合起來,成為一個程式。如果您平日某些序列的指令下得特別頻繁,便可以將這些指令組合起來,成為另一個新的指令。這樣,不但可以簡化并加速操作速度,
2、甚至還可以干脆自動定期執(zhí)行,大大簡化系統(tǒng)管理工作。*bash(gnu bourne-again shell)是許多l(xiāng)inux平臺的內(nèi)定shell,事實上,還有許多傳統(tǒng)unix上用的shell,像tcsh、csh、ash、bsh、ksh等等,shell script大致都類同,當(dāng)您學(xué)會一種shell以后,其它的shell會很快就上手,大多數(shù)的時候,一個shell script通??梢栽诤芏喾Nshell上使用。這里我介紹您bash的使用方法。事實上,當(dāng)您man bash時,就可以看到bash的說明書,不過對許多人來說,這份說明書猶如無字天書一樣難懂。這份文件,主要資料來源為man bash,我加上
3、一些實際日常的應(yīng)用例來說明。希望這樣能讓那些始終不得其門而入的人們,多多少少能有點概念。教學(xué)例子hello world shell script照傳統(tǒng)程式教學(xué)例,這一節(jié)介紹shell script的hello world如何撰寫。*#!/bin/sh# filename : helloecho hello world!*大家應(yīng)該會注意到第一行的#!/bin/sh。在unix下,所有的可執(zhí)行script,不管是那一種語言,其開頭都是#!,例如perl 是#!/usr/bin/perl,tcl/tk是#!/usr/bin/wish,看您要執(zhí)行的script程式位置在那里。您也可以用#! /bin/
4、bash、#!/bin/tcsh等等,來指定使用特定的shell。echo是個bash的內(nèi)建指令。*接下來,執(zhí)行hello這個script:要執(zhí)行一個script的方式有很多種。*第一種 : 將hello這個檔案的權(quán)限設(shè)定為可執(zhí)行。foxmanfoxman bash# chmod 755 hello執(zhí)行foxmanfoxman bash# ./hellohello world精品.*第二種 : 使用bash內(nèi)建指令source或.。foxmanfoxman bash# source hellohello world或foxmanfoxman bash# . hellohello world*第
5、三種 : 直接使用sh/bash/tcsh指令來執(zhí)行。foxmanfoxman bash# sh hellohello world或foxmanfoxman bash# bash hellohello world*bash執(zhí)行選項*-c string : 讀取string來當(dāng)命令。-i : 互動介面。-s : 由stdin讀取命令。- : 取消往后選項的讀取。-norc : 不要讀/.bashrc來執(zhí)行。-noprofile : 不要讀/etc/profile、/.bash_profile、/.bash_login、/.profile等等來執(zhí)行。-rcfile filename : 執(zhí)行fil
6、ename,而非/.bashrc-version : 顯示版本。-quiet : 啟動時不要哩唆。-login : 確保bash是個login shell。-nobraceexpansion : 不要用curly brace expansion(符號展開)。-nolineediting : 不用readline來讀取命令列。-posix : 改采posix 1003.2標(biāo)準(zhǔn)。用于自動備份的shell script一個用于自動備份的shell script我們先前提到,可利用shell script搭配crond來作定期的工作。要作定期性的工作,在unix上,就是與crond的搭配運用。*首先我
7、們先來研究如何對系統(tǒng)進(jìn)行備份。要對系統(tǒng)進(jìn)行備份,不外乎便是利用一些壓縮工具。在許多unix系統(tǒng)上,tar及gzip是de facto的資料交換標(biāo)準(zhǔn)。我們經(jīng)??梢钥匆娨恍﹖ar.gz或tgz檔,這些檔案,被稱為tarball。當(dāng)然了,您也可以用bzip2、zip等等壓縮工具來進(jìn)行壓縮,不必限定于gzip。但tar配合gzip是最普遍的,也是最方便的方式。要將我們想要的資料壓縮起來,進(jìn)行備份,可以結(jié)合tar及gzip一起進(jìn)行。方式有很多種,最常用的指令是以下這一種:精品.tar -c file/dir . | gzip -9 xxxx.tar.gz您也可以分開來做:tar -r file/dir
8、. -f xxxx.targzip -9 xxxx.tar或tar -r file/dir . -f xxxx.targzip -9 xxxx.tar.gz*在解過linux下檔案備份的基本知識后,我們來寫一個將檔案備份的script。#!/bin/sh# filename : backupdirs=/etc /var /your_directories_or_filesbackup=/tmp/backup.tgztar -c $dirs | gzip -9 $backup其中dirs放的是您要備份的檔案及目錄,backup是您的備份檔??刹灰獙?tmp放進(jìn)dirs中,那樣做,您是在做備份的備
9、份,可能將您的硬碟塞爆。*接下來測試foxmanfoxman bash# chmod 755 backupfoxmanfoxman bash# ./backup執(zhí)行完成后在/tmp就會有一個backup.tgz,里面儲存了您重要的資料。您可用gzip -dc /tmp/backup.tgz | tar -vt或tar vtfz /tmp/backup.tgz來看看里面的檔案列表。要解開時,可用以下指令來完成復(fù)原:gzip -dc /tmp/backup.tgz | tar -xv或tar xvfz /tmp/backup.tgz備份通常是僅備份系統(tǒng)通常最重要的部份,/etc可說是不可缺少的一部
10、份。另外,看您系統(tǒng)中有那些重要的資料需要備份。通常來說,您沒有必要備份 /bin、/sbin、/usr/bin、/usr/sbin、/usr/x11r6/bin等等這些執(zhí)行檔目錄。只要備份您重要的檔案即可,別把整個硬碟備份,那是蠻呆的動作。*如果您有許多臺機器,可利用其中一臺任務(wù)較輕的內(nèi)部網(wǎng)路主機,做為主要備份主機。將所有機器都自動執(zhí)行備份,然后利用nfs/coda/samba等網(wǎng)路檔案系統(tǒng),將備份的資料放到該備份機器中,該機器則定時收取備份資料,然后您再由該機器中進(jìn)行一次備份。這里是整個系統(tǒng)備份方案的圖示。在您進(jìn)行之前,先解一下,系統(tǒng)中那些是要備份的,那些是不需要的。*新的backup精品.
11、#!/bin/shhostname=hostnamedirs=/etc /var /your_important_directorybackup=/tmp/$hostname.tgznfs=/mnt/nfstar -c $dirs | gzip -9 $backupmv -f $backup $nfs*備份主機內(nèi)的script : collect_backup#!/bin/shnfs=/mnt/nfsbackup=/backupmv -f $nfs/*.tgz $backup在此,您不能夠?qū)⑺袀浞荻贾苯臃旁?mnt/nfs,這是危險的。萬一任一臺機器不小心將/mnt/nfs所有內(nèi)容刪除,那么
12、備份就會消失。因此,您需要將/mnt/nfs移到一個只有該備份主機可存取的目錄中。*當(dāng)這些個別的script都測試好以后,接下來我們將他們放到crontab里面。找到您的crontab,它的位置可能在/var/spool/cron/crontabs/root、/etc/crontab、/var/cron/tabs/root。在crontab中選擇以下之一加入(看您定期的時間):slackware : /var/spool/cron/crontabs/root01 * * * */full_backup_script_path/backup 1 /dev/null 2 /dev/null # 每
13、小時(太過火一點)30 16 * * */full_backup_script_path/backup 1 /dev/null 2 /dev/null # 每日16:30,下班前備份30 16 * * 0/full_backup_script_path/backup 1 /dev/null 2 /dev/null # 每周一16:300 5 1 * */full_backup_script_path/backup 1 /dev/null 2 /dev/null # 每月一號5:0redhat/debian : /etc/crontabredhat可直接將backup放入/etc/cron.ho
14、urly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly?;虿捎萌缟霞尤?etc/crontab的方式:有關(guān)crontab的用法,可查man 5 crontab,在此不詳述。備份主機的設(shè)定類同。注意: 所有機器不要同時進(jìn)行備份,否則網(wǎng)路會大塞車。備份主機收取備份的時間要設(shè)為最后,否則會收不到備份資料。您可以在實作后,將時間間隔調(diào)整一下。*看看,兩個小小不到三行的shell script,配合cron這個定時工具。可以讓原本需要耗時多個小時的人工備份工作,簡化到不到十分鐘。善用您的想像力,多加一點變化,可你讓您的生活變得輕松異常,快樂悠
15、哉。精品.檔案系統(tǒng)檢查系統(tǒng)安全一向是大多數(shù)電腦用戶關(guān)心的事,在unix系統(tǒng)中,最重視的事,即系統(tǒng)中有沒有木馬(trojan horse)。不管trojan horse如何放進(jìn)來的,有一點始終會不變,即被放置木馬的檔案,其檔案日期一定會被改變,甚至?xí)衅渌臓顟B(tài)改變。此外,許多狀況下,系統(tǒng)會多出一些不知名的檔案。因此,平日檢查整個檔案系統(tǒng)的狀態(tài)是否有被改變,將所有狀態(tài)有改變的檔案,以及目前有那些程式正在執(zhí)行,自動報告給系統(tǒng)管理員,是個避免坐上木馬的良方。*#!/bin/sh# filename : whatever_you_name_itdirs=/etc /home /bin /sbin /u
16、sr/bin /usr/sbin /usr/local /var /your_directoryadmin=from=# 寫入sendmail的標(biāo)頭echo subject: $hostname filesystem check /tmp/today.mailecho from: $from /tmp/today.mailecho to: $admin /tmp/today.mailecho this is filesystem report comes from $hostname /tmp/today.mail
17、# 報告目前正在執(zhí)行的程式ps axf /tmp/today.mail# 檔案系統(tǒng)檢查echo file system check /tmp/today.maills -alr $dirs | gzip -9 /tmp/today.gzzdiff /tmp/today.gz /tmp/yesterday.gz /tmp/today.mailmv -f /tmp/today.gz /tmp/yesterday.gz# 寄出信件sendmail -t然后把它放到一個不顯眼的地方去,讓別人找不到。把它加入crontab中。30 7 * * */full_check_script_path/whate
18、ver_you_name_it 1 /dev/null 2 /dev/null #上班前檢查有些檔案是固定會更動的,像/var/log/messages、/var/log/syslog、/dev/ttyx等等,不要太大驚小怪??刂迫or演示了幾個簡單的shell script,相信您應(yīng)該對shell script有點概念了?,F(xiàn)在我們開始來仔細(xì)研究一些較高等的shell script寫作。一些進(jìn)一步的說明,例如$、1、2符號的使用,會在稍后解釋。*for name in word; do list ; done控制圈。word是一序列的字,for會將word中的個別字展開,然后設(shè)定到name上
19、面。list是一序列的工作。如果in word;省略掉,那么name將會被設(shè)定為script后面所加的參數(shù)。精品.*例一:#!/bin/shfor i in a b c d e f ; doecho $idone它將會顯示出a到f。*例二: 另一種用法,a-z#!/bin/shword=a b c d e f g h i j l m n o p q r s t u v w x y zfor i in $word ; doecho $idone這個script將會顯示a到z。*例三 : 修改副檔名如果您有許多的.txt檔想要改名成.doc檔,您不需要一個一個來。#!/bin/shfiles=ls
20、 /txt/*.txtfor txt in $files ; dodoc=echo $txt | sed s/.txt/.doc/mv $txt $docdone這樣可以將*.txt檔修改成*.doc檔。*例四 : meow#!/bin/sh# filename : meowfor i ; docat $idone當(dāng)您輸入meow file1 file2 .時,其作用就跟cat file1 file2 .一樣。*例五 : listbin#!/bin/sh# filename : listbinfor i in /bin/* ; doecho $i精品.done當(dāng)您輸入listbin時,其作用就
21、跟ls /bin/*一樣。*例六 : /etc/rc.d/rc拿一個實際的例來說,red hat的/etc/rc.d/rc的啟動程式中的一個片斷。for i in /etc/rc.d/rc$runlevel.d/s*; do# check if the script is there. ! -f $i & continue# check if the subsystem is already up.subsys=$ -f /var/lock/subsys/$subsys | -f /var/lock/subsys/$.init & continue# bring the subsystem u
22、p.$i startdone這個例中,它找出/etc/rc.d/rcx.d/s*所有檔案,檢查它是否存在,然后一一執(zhí)行。流程控制casecase word in pattern | pattern . ) list ; . esaccase/esac的標(biāo)準(zhǔn)用法大致如下:case $arg inpattern | sample) # arg in pattern or sample;pattern1) # arg in pattern1;*) #default;esacarg是您所引入的參數(shù),如果arg內(nèi)容符合pattern項目的話,那么便會執(zhí)行pattern以下的程式碼,而該段程式碼則以兩個-
23、more-(28%) 分號;做結(jié)尾??梢宰⒁獾絚ase及esac是對稱的,如果記不起來的話,把case顛倒過來即可。*例一 : paranoia#!/bin/shcase instart | begin)echo start something;stop | end)echo stop something精品.;*)echo ignorant;esac執(zhí)行foxmanfoxman bash# chmod 755 paranoiafoxmanfoxman bash# ./paranoiaignorantfoxmanfoxman bash# ./paranoia startstart someth
24、ingfoxmanfoxman bash# ./paranoia beginstart somethingfoxmanfoxman bash# ./paranoia stopstop somethingfoxmanfoxman bash# ./paranoia endstop something*例二 : inetpanel許多的daemon都會附上一個管理用的shell script,像bind就附上ndc,apache就附上apachectl。這些管理程式都是用sh ell script來寫的,以下示一個管理inetd的shell script。#!/bin/shcase instart
25、| begin | commence) /usr/sbin/inetd;stop | end | destroy) killall inetd;restart | again) killall -hup inetd;*) echo usage: inetpanel start | begin | commence | stop | end | destory | restart | again;esac*例三 : 判斷系統(tǒng)有時候,您所寫的script可能會跨越好幾種平臺,如linux、freebsd、solaris等等,而各平臺之間,多多少少都有不同之處,有時候需要判斷目前正在那一種平臺上執(zhí)行
26、。此時,我們可以利用uname來找出系統(tǒng)資訊。精品.#!/bin/shsystem=uname -scase $system inlinux)echo my system is linuxecho do linux stuff here.;freebsd)echo my system is freebsdecho do freebsd stuff here.;*)echo unknown system : $systemecho i dont what to do.;esac流程控制selectselect name in word; do list ; doneselect顧名思義就是在wo
27、rd中選擇一項。與for相同,如果in word;省略,將會使用script后面所加的參數(shù)。例:#!/bin/shword=a b cselect i in $word ; docase $i ina)echo i am a;b)echo i am b;c)echo i am c;*)break;esacdone執(zhí)行結(jié)果foxmanfoxman bash# ./select_demo1) a2) b精品.3) c#? 1i am a1) a2) b3) c#? 2i am b1) a2) b3) c#? 3i am c1) a2) b3) c#? 4返回狀態(tài)exit在繼續(xù)下去之前,我們必須要切
28、入另一個話題,即返回狀態(tài)值 - exit status。因為if/while/until都遷涉到了使用exit status來控制程式流程的問題。*許多人都知道,在許多語言中(c/c+/perl.),都有一個exit的函數(shù),甚至連bash自己都有個exit的內(nèi)建命令。而exit后面所帶的數(shù)字,便是返回狀態(tài)值 - exit status。返回狀態(tài)值可以使得程式與程式之間,利用shell script來結(jié)合的可能性大增,利用小程式,透過shell script,來完成很雜的工作。在shell中,返回值為零表示成功(true),非零值為失敗(false)。*舉例來說,以下這個兩個小程式y(tǒng)es/no分
29、別會返回0/1(成功/失敗):/* yes.c */void main(void) exit(0); /* no.c */void main(void) exit(1); 那么以下這個yes的shell script便會顯示yes。#!/bin/sh# yesif yes ; thenecho yesfi而no不會顯示任何東西。#!/bin/sh# no精品.if no ; thenecho yesfi*test express express 在shell script中,test express/ express 這個語法被大量地使用,它是個非常實用的指令。由于它的返回值即exit sta
30、tus,經(jīng)常被運用在if/while/until的場合中。而在后面,我們也會大量運用到,在進(jìn)入介紹if/while/until之前,有必要先解一下。其返回值為0(true)或1(false),要看表述(express)的結(jié)果為何。express格式-b file : 當(dāng)檔案存在并且屬性是block special(通常是/dev/xxx)時,返回true。-c file : 當(dāng)檔案存在并且屬性是character special(通常是/dev/xxx)時,返回true。-d file : 當(dāng)檔案存在并且屬性是目錄時,返回true。-e file : 當(dāng)檔案存在時,返回true。-f file
31、 :當(dāng)檔案存在并且是正常檔案時,返回true。-g file :當(dāng)檔案存在并且是set-group-id時,返回true。-k file :當(dāng)檔案存在并且有sticky bit被設(shè)定時,返回true。-l file :當(dāng)檔案存在并且是symbolic link時,返回true。-p file :當(dāng)檔案存在并且是name pipe時,返回true。-r file :當(dāng)檔案存在并且可讀取時,返回true。-s file :當(dāng)檔案存在并且檔案大小大于零時,返回true。-s file : 當(dāng)檔案存在并且是socket時,返回true。-t fd : 當(dāng)fd被開啟為terminal時,返回true。-
32、u file : 當(dāng)檔案存在并且set-user-id bit被設(shè)定時,返回true。-w file : 當(dāng)檔案存在并且可寫入時,返回true。-x file : 當(dāng)檔案存在并且可執(zhí)行時,返回true。-o file : 當(dāng)檔案存在并且是被執(zhí)行的user id所擁有時,返回true。-g file : 當(dāng)檔案存在并且是被執(zhí)行的group id所擁有時,返回true。file1 -nt file2 : 當(dāng)file1比file2新時(根據(jù)修改時間),返回true。file1 -ot file2 : 當(dāng)file1比file2舊時(根據(jù)修改時間),返回true。file1 -ef file2 : 當(dāng)f
33、ile1與file2有相同的device及inode number時,返回true。-z string : 當(dāng)string的長度為零時,返回true。-n string : 當(dāng)string的長度不為零時,返回true。string1 = string2 : string1與string2相等時,返回true。string1 != string2 : string1與string2不相等時,返回true。! express : express為false時,返回true。expr1 -a expr2 : expr1及expr2為true。expr1 -o expr2 : expr1或expr2其
34、中之一為true。arg1 op arg2 : op是-eqequal、-nenot-equal、-ltless-than、-leless-than-or-equal、 -gtgreater-than 、-gegreater-than-or-equal的其中之一。精品. *在bash中,當(dāng)錯誤發(fā)生在致命信號時,bash會返回128+signal number做為返回值。如果找不到命令,將會返回127。如果命令找到了,但該命令是不可執(zhí)行的,將返回126。除此以外,bash本身會返回最后一個指令的返回值。若是執(zhí)行中發(fā)生錯誤,將會返回一個非零的值。fatal signal : 128 + signo
35、cant not find command : 127cant not execute : 126shell script successfully executed : return the last command exit statusfatal during execution : return non-zero流程控制ifif list then list elif list then list . else list fi幾種可能的寫法*第一種if list thendo something herefi當(dāng)list表述返回值為true(0)時,將會執(zhí)行do something he
36、re。例一 : 當(dāng)我們要執(zhí)行一個命令或程式之前,有時候需要檢查該命令是否存在,然后才執(zhí)行。if -x /sbin/quotaon ; thenecho turning on quota for root filesystem/sbin/quotaon /fi例二 : 當(dāng)我們將某個檔案做為設(shè)定檔時,可先檢查是否存在,然后將該檔案設(shè)定值載入。# filename : /etc/ppp/settingsphone=1-800-collect#!/bin/sh# filename : phonebillif -f /etc/ppp/settings ; thensource /etc/ppp/sett
37、ingsecho $phonefi執(zhí)行foxmanfoxman ppp# ./phonebill1-800-collect*第二種if list then精品.do something hereelsedo something else herefi例三 : hostname#!/bin/shif -f /etc/hostname ; thenhostname=cat /etc/hostnameelsehostname=localhostfi*第三種if list thendo something hereelif list thendo another thing herefi例四 : 如果
38、某個設(shè)定檔允許有好幾個位置的話,例如crontab,可利用if then elif fi來找尋。#!/bin/shif -f /etc/crontab ; thencrontab=/etc/crontabelif -f /var/spool/cron/crontabs/root ; thencrontab=/var/spool/cron/crontabs/rootelif -f /var/cron/tabs/root ; thencrontab=/var/cron/tabs/rootfiexport crontab*第四種if list thendo something hereelif li
39、st thendo another thing hereelsedo something else herefi例五 : 我們可利用uname來判斷目前系統(tǒng),并分別做各系統(tǒng)狀況不同的事。#!/bin/shsystem=uname -sif $system = linux ; then精品.echo linuxelif $system = freebsd ; thenecho freebsdelif $system = solaris ; thenecho solariselseecho what?fi控制圈while/untilwhile list do list done當(dāng)list為true
40、時,該圈會不停地執(zhí)行。例一 : 無限回圈寫法#!/bin/shwhile : ; doecho do something forever heresleep 5done例二 : 強迫把pppd殺掉。#!/bin/shwhile -f /var/run/ppp0.pid ; dokillall pppddone*until list do list done當(dāng)list為false(non-zero)時,該圈會不停地執(zhí)行。例一 : 等待pppd上線。#!/bin/shuntil -f /var/run/ppp0.pid ; dosleep 1done參數(shù)與變數(shù)在繼續(xù)下去介紹function之前,我
41、們必須停下來介紹參數(shù)與變數(shù)。*參數(shù)(parameters)是用來儲存值的資料型態(tài),有點像是一般語言中的變數(shù)。它可以是個名稱(name)、數(shù)字(number)、或者是以下所列出來一些特殊符號(special parameters)。在shell中,變數(shù)是由name形式的參數(shù)所構(gòu)成的。*在前面的許多例中,我們事實上已經(jīng)看到許多參數(shù)的運用。要設(shè)定一個parameter實際很簡單:name=value精品.例如說:myhost=foxman而要使用它時,則是加個$符號。echo $myhost*位置參數(shù)(positional parameters)*所謂的位置參數(shù)便是0,1,2,3,4,5,6,7,8,9.。使用時,用,.。位置參數(shù)是當(dāng)script被載入時,后面所附加的參數(shù)。是本身,則為第一個參數(shù),為第二個,依此類推。而當(dāng)positional parameters被function所使用時,它們會被暫時取代(下一節(jié)會介紹function)。例如以下這個script:#!/bin/sh# filename : positionecho echo 執(zhí)行時:foxmanfoxman bash# ./position abc./positionabc當(dāng)位置參數(shù)超過兩位數(shù)時,有特別的方法來展開,稱為expansion。*特殊參數(shù)(speical parameters)這些
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北師大版九年級歷史下冊階段測試試卷含答案
- 2025年新科版八年級地理上冊月考試卷
- 2025年華師大新版一年級語文下冊階段測試試卷含答案
- 2025年人教A新版九年級歷史下冊月考試卷含答案
- 2025年粵教新版高三英語上冊月考試卷含答案
- 2025年北師大版選擇性必修3歷史下冊階段測試試卷含答案
- 公民教育理論與實踐知到智慧樹章節(jié)測試課后答案2024年秋西華大學(xué)
- 2025年度定制衣柜設(shè)計制作合同樣本4篇
- 技術(shù)部合同范本(2篇)
- 房建工程監(jiān)理合同(2篇)
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計)(人教版2024)八年級物理下冊
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 單位往個人轉(zhuǎn)賬的合同(2篇)
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運動能力測評規(guī)范
- 鍋爐本體安裝單位工程驗收表格
- 高危妊娠的評估和護(hù)理
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
評論
0/150
提交評論