版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、文檔供參考,可復(fù)制、編制,期待您的好評與關(guān)注! bash編程入門Shell Script(bash)簡介眾所皆知地,UNIX上以小工具著名,利用許多簡單的小工具,來完成原本需要大量軟體開發(fā)的工作,這一點特色,使得UNIX成為許多人心目中理想的系統(tǒng)平臺。在眾多的小工具中,Shell Script算得上是最基本、最強(qiáng)大、運用最廣泛的一個。它運用圍之廣,不但從系統(tǒng)啟動、程式編譯、定期作業(yè)、上網(wǎng)連線,甚至安裝整個Linux系統(tǒng),都可以用它來完成。因為Shell Script是利用您平日在使用的一些指令,將之組合起來,成為一個"程式"。如果您平日某些序列的指令下得特別頻繁,便可以將這
2、些指令組合起來,成為另一個新的指令。這樣,不但可以簡化并加速操作速度,甚至還可以干脆自動定期執(zhí)行,大大簡化系統(tǒng)管理工作。*Bash(GNU Bourne-Again SHell)是許多Linux平臺的內(nèi)定Shell,事實上,還有許多傳統(tǒng)UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等,Shell Script大致都類同,當(dāng)您學(xué)會一種Shell以后,其它的Shell會很快就上手,大多數(shù)的時候,一個Shell Script通常可以在很多種Shell上使用。這里我介紹您bash的使用方法。事實上,當(dāng)您"man bash"時,就可以看到bash的說明書,不過
3、對許多人來說,這份說明書猶如"無字天書"一樣難懂。這份文件,主要資料來源為"man bash",我加上一些實際日常的應(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"
4、;。在UNIX下,所有的可執(zhí)行Script,不管是那一種語言,其開頭都是"#!",例如Perl 是"#!/usr/bin/perl",tcl/tk是"#!/usr/bin/wish",看您要執(zhí)行的Script程式位置在那里。您也可以用"#! /bin/bash"、"#!/bin/tcsh"等等,來指定使用特定的Shell。echo是個bash的內(nèi)建指令。*接下來,執(zhí)行hello這個script:要執(zhí)行一個Script的方式有很多種。*第一種 : 將hello這個檔案的權(quán)限設(shè)定為可執(zhí)行。foxma
5、nfoxman bash# chmod 755 hello執(zhí)行foxmanfoxman bash# ./hellohello world*第二種 : 使用bash內(nèi)建指令"source"或"."。foxmanfoxman bash# source hellohello world或foxmanfoxman bash# . hellohello world*第三種 : 直接使用sh/bash/tcsh指令來執(zhí)行。foxmanfoxman bash# sh hellohello world或foxmanfoxman bash# bash hellohello
6、 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í)行filename,而非/.bashrc-version : 顯示版本。-quiet : 啟動時不要哩唆。-login : 確保bash是個login shell。-nobraceexpansion : 不要
7、用curly brace expansion(符號展開)。-nolineediting : 不用readline來讀取命令列。-posix : 改采Posix 1003.2標(biāo)準(zhǔn)。用于自動備份的Shell Script一個用于自動備份的Shell Script我們先前提到,可利用Shell Script搭配crond來作定期的工作。要作定期性的工作,在UNIX上,就是與crond的搭配運用。*首先我們先來研究如何對系統(tǒng)進(jìn)行備份。要對系統(tǒng)進(jìn)行備份,不外乎便是利用一些壓縮工具。在許多UNIX系統(tǒng)上,tar及gzip是de facto的資料交換標(biāo)準(zhǔn)。我們經(jīng)常可以看見一些tar.gz或tgz檔,這些檔案
8、,被稱為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 . -f xxxx.targzip -9 xxxx.tar或tar -r file/dir . -f xxxx.targzip -9 xxxx.tar.gz*在解過Linux下檔案備份的基本知識后
9、,我們來寫一個將檔案備份的Script。#!/bin/sh# Filename : backupDIRS="/etc /var /your_directories_or_files"BACKUP="/tmp/backup.tgz"tar -c $DIRS | gzip -9 > $BACKUP其中DIRS放的是您要備份的檔案及目錄,BACKUP是您的備份檔。可不要將/tmp放進(jìn)DIRS中,那樣做,您是在做備份的備份,可能將您的硬碟塞爆。*接下來測試foxmanfoxman bash# chmod 755 backupfoxmanfoxman bas
10、h# ./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可說是不可缺少的一部份。另外,看您系統(tǒng)中有那些重要的資料需要備份。通常來說,您沒有必要備份 /bin、/sbin、/usr/bin、/usr/sbin、/us
11、r/X11R6/bin等等這些執(zhí)行檔目錄。只要備份您重要的檔案即可,別把整個硬碟備份,那是蠻呆的動作。*如果您有許多臺機(jī)器,可利用其中一臺任務(wù)較輕的內(nèi)部網(wǎng)路主機(jī),做為主要備份主機(jī)。將所有機(jī)器都自動執(zhí)行備份,然后利用NFS/Coda/Samba等網(wǎng)路檔案系統(tǒng),將備份的資料放到該備份機(jī)器中,該機(jī)器則定時收取備份資料,然后您再由該機(jī)器中進(jìn)行一次備份。這里是整個系統(tǒng)備份方案的圖示。在您進(jìn)行之前,先解一下,系統(tǒng)中那些是要備份的,那些是不需要的。*新的backup#!/bin/shHOSTNAME=hostnameDIRS="/etc /var /your_important_directory
12、"BACKUP="/tmp/$HOSTNAME.tgz"NFS="/mnt/nfs"tar -c $DIRS | gzip -9 > $BACKUPmv -f $BACKUP $NFS*備份主機(jī)內(nèi)的Script : collect_backup#!/bin/shNFS="/mnt/nfs"BACKUP="/backup"mv -f $NFS/*.tgz $BACKUP在此,您不能夠?qū)⑺袀浞荻贾苯臃旁?mnt/nfs,這是危險的。萬一任一臺機(jī)器不小心將/mnt/nfs所有內(nèi)容刪除,那么備份就會消失。
13、因此,您需要將/mnt/nfs移到一個只有該備份主機(jī)可存取的目錄中。*當(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 #
14、每小時(太過火一點)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/crontabRedHa
15、t可直接將backup放入/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly。或采用如上加入/etc/crontab的方式:有關(guān)crontab的用法,可查"man 5 crontab",在此不詳述。備份主機(jī)的設(shè)定類同。注意: 所有機(jī)器不要同時進(jìn)行備份,否則網(wǎng)路會大塞車。備份主機(jī)收取備份的時間要設(shè)為最后,否則會收不到備份資料。您可以在實作后,將時間間隔調(diào)整一下。*看看,兩個小小不到三行的Shell Script,配合cron這個定時工具??梢宰屧拘枰臅r多個小時的人工備份工作,簡化到不
16、到十分鐘。善用您的想像力,多加一點變化,可你讓您的生活變得輕松異常,快樂悠哉。檔案系統(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# Fi
17、lename : whatever_you_name_itDIRS="/etc /home /bin /sbin /usr/bin /usr/sbin /usr/local /var /your_directory"ADMIN="email"FROM="admin"# 寫入Sendmail的標(biāo)頭echo "Subject: $HOSTNAME filesystem check" > /tmp/today.mailecho "From: $FROM" >> /tmp/today.
18、mailecho "To: $ADMIN" >> /tmp/today.mailecho "This is filesystem report comes from $HOSTNAME" >> /tmp/today.mail# 報告目前正在執(zhí)行的程式ps axf >> /tmp/today.mail# 檔案系統(tǒng)檢查echo "File System Check" >> /tmp/today.maills -alR $DIRS | gzip -9 > /tmp/today.gzzdi
19、ff /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/whatever_you_name_it 1> /dev/null 2> /dev/null #上班前檢查有些檔案是固定會更動的,像/var/log/messages、/var/log/syslog、/dev/ttyX等等
20、,不要太大驚小怪。控制圈for演示了幾個簡單的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上面。list是一序列的工作。如果in word;省略
21、掉,那么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 z"for i in $WORD ; doecho $idone這個Script將會顯示a到z。*例三 : 修改副檔名如果您有許多的.txt檔想要改名成.doc檔,您不需要一個一個來。#!/bin/shFILES=ls /txt/*.txtfor tx
22、t 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 $idone當(dāng)
23、您輸入"listbin"時,其作用就跟"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/loc
24、k/subsys/$.init && continue# Bring the subsystem up.$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是您所
25、引入的參數(shù),如果arg內(nèi)容符合pattern項目的話,那么便會執(zhí)行pattern以下的程式碼,而該段程式碼則以兩個-More-(28%) 分號""做結(jié)尾??梢宰⒁獾?quot;case"及"esac"是對稱的,如果記不起來的話,把"case"顛倒過來即可。*例一 : paranoia#!/bin/shcase instart | begin)echo "start something"stop | end)echo "stop something"*)echo "Ignora
26、nt"esac執(zhí)行foxmanfoxman bash# chmod 755 paranoiafoxmanfoxman bash# ./paranoiaIgnorantfoxmanfoxman bash# ./paranoia startstart somethingfoxmanfoxman bash# ./paranoia beginstart somethingfoxmanfoxman bash# ./paranoia stopstop somethingfoxmanfoxman bash# ./paranoia endstop something*例二 : inetpanel許多
27、的daemon都會附上一個管理用的Shell Script,像BIND就附上ndc,Apache就附上apachectl。這些管理程式都是用sh ell script來寫的,以下示一個管理inetd的shell script。#!/bin/shcase instart | begin | commence) /usr/sbin/inetd;stop | end | destroy) killall inetd;restart | again) killall -HUP inetd;*) echo "usage: inetpanel start | begin | commence |
28、 stop | end | destory | restart | again"esac*例三 : 判斷系統(tǒng)有時候,您所寫的Script可能會跨越好幾種平臺,如Linux、FreeBSD、Solaris等等,而各平臺之間,多多少少都有不同之處,有時候需要判斷目前正在那一種平臺上執(zhí)行。此時,我們可以利用uname來找出系統(tǒng)資訊。#!/bin/shSYSTEM=uname -scase $SYSTEM inLinux)echo "My system is Linux"echo "Do Linux stuff here."FreeBSD)echo &
29、quot;My system is FreeBSD"echo "Do FreeBSD stuff here."*)echo "Unknown system : $SYSTEM"echo "I don't what to do."esac流程控制selectselect name in word; do list ; doneselect顧名思義就是在word中選擇一項。與for相同,如果in word;省略,將會使用Script后面所加的參數(shù)。例:#!/bin/shWORD="a b c"sele
30、ct 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) b3) c#? 1I am A1) a2) b3) c#? 2I am B1) a2) b3) c#? 3I am C1) a2) b3) c#? 4返回狀態(tài)Exit在繼續(xù)下去之前,我們必須要切入另一個話題,即返回狀態(tài)值 - Exit Status。因為if/while/un
31、til都遷涉到了使用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分別會返回0/1(成功/失敗):/* yes.c */void main(void)
32、 exit(0); /* no.c */void main(void) exit(1); 那么以下這個"YES"的shell script便會顯示"YES"。#!/bin/sh# YESif yes ; thenecho "YES"fi而"NO"不會顯示任何東西。#!/bin/sh# NOif no ; thenecho "YES"fi*test express express 在Shell script中,test express/ express 這個語法被大量地使用,它是個非常實用的指令。
33、由于它的返回值即Exit Status,經(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)檔案存在
34、時,返回True。-f file :當(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
35、 : 當(dāng)fd被開啟為terminal時,返回True。-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ù)修改時間)
36、,返回True。file1 -ef file2 : 當(dāng)file1與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。e
37、xpr1 -o expr2 : expr1或expr2其中之一為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ā)生錯誤,將會返回一個非零的值。F
38、atal Signal : 128 + signoCan't not find command : 127Can't 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)lis
39、t表述返回值為True(0)時,將會執(zhí)行"do something here"。例一 : 當(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 :
40、phonebillif -f /etc/ppp/settings ; thensource /etc/ppp/settingsecho $PHONEfi執(zhí)行foxmanfoxman ppp# ./phonebill1-800-COLLECT*第二種if list thendo something hereelsedo something else herefi例三 : Hostname#!/bin/shif -f /etc/HOSTNAME ; thenHOSTNAME=cat /etc/HOSTNAMEelseHOSTNAME=localhostfi*第三種if list thendo so
41、mething hereelif list thendo another thing herefi例四 : 如果某個設(shè)定檔允許有好幾個位置的話,例如crontab,可利用if then elif fi來找尋。#!/bin/shif -f /etc/crontab ; thenCRONTAB="/etc/crontab"elif -f /var/spool/cron/crontabs/root ; thenCRONTAB="/var/spool/cron/crontabs/root"elif -f /var/cron/tabs/root ; thenCRO
42、NTAB="/var/cron/tabs/root"fiexport CRONTAB*第四種if list thendo something hereelif list thendo another thing hereelsedo something else herefi例五 : 我們可利用uname來判斷目前系統(tǒng),并分別做各系統(tǒng)狀況不同的事。#!/bin/shSYSTEM=uname -sif $SYSTEM = "Linux" ; thenecho "Linux"elif $SYSTEM = "FreeBSD&quo
43、t; ; thenecho "FreeBSD"elif $SYSTEM = "Solaris" ; thenecho "Solaris"elseecho "What?"fi控制圈while/untilwhile list do list done當(dāng)list為True時,該圈會不停地執(zhí)行。例一 : 無限回圈寫法#!/bin/shwhile : ; doecho "do something forever here"sleep 5done例二 : 強(qiáng)迫把pppd殺掉。#!/bin/shwhile -
44、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之前,我們必須停下來介紹"參數(shù)與變數(shù)"。*參數(shù)(Parameters)是用來儲存"值"的資料型態(tài),有點像是一般語言中的變數(shù)。它可以是個名稱(name)、數(shù)字(number)、或者是以下所列出來一些特
45、殊符號(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024工程招標(biāo)合同范本
- 2024年度云服務(wù)租賃合同
- 公司春節(jié)晚會活動策劃3篇
- 2024年度智能家居安防監(jiān)控系統(tǒng)安裝與維護(hù)合同
- 2024年商業(yè)物業(yè)管理合同
- 2024雙方關(guān)于環(huán)保設(shè)備的買賣合同
- 2024年廢物分類與回收協(xié)議
- 2024年度CFG樁基工程項目管理合同
- 2024年度產(chǎn)品質(zhì)量保證與維修服務(wù)合同
- 2024年夫妻雙方關(guān)于房產(chǎn)買賣及產(chǎn)權(quán)分配協(xié)議
- 2024版人教版英語初一上單詞默寫單
- 化學(xué)實驗室安全智慧樹知到期末考試答案2024年
- 經(jīng)典房地產(chǎn)營銷策劃培訓(xùn)(全)
- 工人入場安全教育課件
- 【川教版】《生命 生態(tài) 安全》二年級上冊第12課 少點兒馬虎 多點兒收獲 課件
- 人教版數(shù)學(xué)四年級上冊第五單元 《平行四邊形和梯形》 大單元作業(yè)設(shè)計
- 靜配中心差錯預(yù)防
- 送教上門體育、健康教案教學(xué)內(nèi)容
- 高夫品牌市場分析報告
- 職業(yè)規(guī)劃書-數(shù)字化設(shè)計與制造技術(shù)
- 國家臨床重點??平ㄔO(shè)項目申報書
評論
0/150
提交評論